python线程块

B_o*_*o_b 12 python python-multithreading

我正在尝试编写一个在循环中创建新线程的程序,而不是等待它们完成.据我所知,如果我在线程上使用.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'
Run Code Online (Sandbox Code Playgroud)

谢谢大家

Jan*_*ila 28

这将调用该函数并将其结果传递为target:

threading.Thread(target=DoWorkItem(), args=())
Run Code Online (Sandbox Code Playgroud)

丢失括号以传递函数对象本身:

threading.Thread(target=DoWorkItem, args=())
Run Code Online (Sandbox Code Playgroud)

  • 哈哈,我犯了同样愚蠢的错误^^.谢谢! (3认同)