Python中的线程无法按预期工作

时间:2013-10-20 12:57:35

标签: python multithreading

我正在尝试使用threading处理目录中的文件。新的线程我希望每个线程单独处理一个文件。但程序正在等待,直到一个文件被处理。程序使用{启动线程{1}}并等待它完成在下一行

中打印消息
t.start()

然后才开始另一个线程

这是python代码的一部分

print 'Started....' + fieldType +' proccessing'

4 个答案:

答案 0 :(得分:4)

启动一个线程,然后将其放入一个列表并立即加入该列表中的所有线程,因此您可以在该列表中始终有一个活动线程。

你需要移动

    for thread in threads:
        thread.join()

离开你的for循环。

答案 1 :(得分:1)

向我们展示ProcessFile的代码。我认为问题是你没有将它作为函数引用(Thread)传递给target=ProcessFile构造函数,而是调用它然后将它返回的任何内容传递给Thread()

如果我是对的,那么你应该做

t = Thread(target=ProcessFile, args=(fieldType, filePath, data))

答案 2 :(得分:0)

您正在使用Join,这就是它等待的原因。

  

join([time]):join()等待线程终止。

Join视为同步,您希望何时同步线程?

如果您希望处理N个线程,请在完成后继续使用您的软件,然后在完成线程后使用join。

答案 3 :(得分:0)

我的代码有2个问题

一个问题是@mata指出我需要移动

for thread in threads:
    thread.join()

out for for for循环

第二个问题是@justinas指出的

t = Thread(target=ProcessFile(fieldType,filePath,data))

应该是

t = Thread(target=ProcessFile, args=(fieldType, filePath, data))