Python:如何不等待线程完成继续?

dpe*_*rie 8 python multithreading

所以我有一些等待X发生的代码,然后创建一个线程并执行processEmail.

我正在寻找的是代码继续等待X的方法,即使processEmail正在另一个线程中发生,但是当前代码只是在等待X再次发生之前等待线程完成.

if X happens:
    thread = Thread(target = processEmail.main())
    thread.start()
Run Code Online (Sandbox Code Playgroud)

编辑:仅供参考我没有任何需要输出processEmail.main()的代码,因此我无需等待其输出.

答案由Jean提供:在主要之后删除().

Jea*_*bre 11

问题是你实际上在调用你的方法作为参数传递它时Thread.

所以它执行,但在当前线程中,这就是为什么它正在工作但它阻塞(并且因为它可能返回None,你没有从Thread对象得到错误,它只是阻塞)

删除括号以传递函数对象,而不是调用的结果!

thread = Thread(target = processEmail.main)
thread.start()
Run Code Online (Sandbox Code Playgroud)

注意:某些IDE(如PyCharm)会自动将括号添加到函数名称中.在那种情况下,这是一个坏主意:)

  • 好吧,该死,你完全正确!我怎么错过了我不知道!!非常感谢让! (2认同)