我正在尝试使用threading处理目录中的文件。新的线程我希望每个线程单独处理一个文件。但程序正在等待,直到一个文件被处理。程序使用{启动线程{1}}并等待它完成在下一行
中打印消息t.start()
然后才开始另一个线程
这是python代码的一部分
print 'Started....' + fieldType +' proccessing'
答案 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))