python多线程并发线程数量受到限制

Python/PHP/Perl 开发与设计
回复
liku
帖子: 4
注册时间: 2016-12-11 20:30
系统: ubuntu
送出感谢: 1 次
接收感谢: 0

python多线程并发线程数量受到限制

#1

帖子 liku » 2016-12-18 20:52

突然蜜汁发现...python的多线程在效率上很鸡肋....


利用递归创建线程,想实现多线程的并发,但是数量慢慢递增到50左右就上不去了,为什么。

查过linux的系统线程并发数量的值是很大的,是代码问题还是系统有什么限制了进程数量的上升。

代码: 全选

class fileFind:

    catalog = ""
    key = ""
    result = []
    count = 0;

    def __init__(self):
        self.catalog = "/"

    def startDir(self,dir):
        self.catalog = dir

    def setKey(self,key):
        self.key = key

    def fileSearch(self,path):
        for root,dir,file in os.walk(path):
            for name in dir:
                self.searchThread(os.path.join(path,name))
            break
        for f in os.listdir(path):
            if (f.strip().find(self.key)>-1):
                self.result.append(os.path.join(path,f.strip()))

    def searchThread(self,path):
        t = threading.Thread(target=self.fileSearch,args=(path,))
        t.setDaemon(True)
        t.start()
        t.join()



if __name__=="__main__":
    a = fileFind()
    a.startDir("/")
    a.setKey("sdafhsa")
    a.searchThread(a.catalog)
头像
astolia
论坛版主
帖子: 3201
注册时间: 2008-09-18 13:11
送出感谢: 1 次
接收感谢: 538 次

Re: python多线程并发线程数量受到限制

#2

帖子 astolia » 2016-12-20 21:03

你明白t.join()的意思吗? https://docs.python.org/2/library/threa ... hread.join
你把t.join()去掉,再到程序最后用这段看看效果

代码: 全选

while (threading.activeCount() > 1):
    time.sleep(1)
回复

回到 “Python/Php/Perl”