threading.join()不等待线程完成

时间:2018-01-16 09:05:34

标签: python multithreading python-multithreading

正如我所提到的那样。我在Spyder IDE中使用Python 2.7。我的问题是,在我的循环中,所有线程立即启动...这会杀死我的电脑。这就是为什么我一次只想要其中两个。我知道join等待线程完成?我误解了吗?

    def func1(string):
        subprocess.Popen(string , shell= True)

    for i in range(0,A):
        j = 0
        check = False
        tl=[]
        while j <= B : 
            string = 'python do.py'+ ' '+str(i)+' '+str( j)+' '+ str( 3)
            t = threading.Thread(target=func1,args=[string])       
            t.start()
            tl.append(t)
            string = 'python do.py'+ ' '+str(i)+' '+str( j)+' '+ str( 3)
            t = threading.Thread(target=func1,args=[string])       
            t.start()
            tl.append(t)
            for t in tl:
               t.join()

1 个答案:

答案 0 :(得分:0)

join确实等待线程完成,但subprocess.Popen()没有。 请尝试使用subprocess.call()

在此处查看更多内容:Python popen command. Wait until the command is finished