我正在尝试编写一个在循环中创建新线程的程序,而不是等待它们完成。 据我所知,如果我在线程上使用.start(),我的主循环应该继续,而另一个线程将会同时执行其工作
然而,一旦我的新线程启动,循环就会阻塞,直到线程完成。 我是否误解了线程如何在python中工作,或者我正在做些什么蠢事。
这是我创建新线程的代码。
def MainLoop():
print 'started'
while 1:
if not workQ.empty():
newThread = threading.Thread(target=DoWorkItem(), args=())
newThread.daemon = True
newThread.start()
else:
print 'queue empty'
感谢所有
答案 0 :(得分:25)
这会调用该函数并将其结果传递为target
:
threading.Thread(target=DoWorkItem(), args=())
丢失括号以传递函数对象本身:
threading.Thread(target=DoWorkItem, args=())