所以我有一些等待X发生的代码,然后创建一个线程并执行processEmail.
我正在寻找的是代码继续等待X的方法,即使processEmail正在另一个线程中发生,但是当前代码只是在等待X再次发生之前等待线程完成.
if X happens: thread = Thread(target = processEmail.main()) thread.start()
编辑:仅供参考我没有任何需要输出processEmail.main()的代码,因此我无需等待其输出.
答案由Jean提供:在主要之后删除().
问题是你实际上在调用你的方法作为参数传递它时Thread
.
所以它执行,但在当前线程中,这就是为什么它正在工作但它阻塞(并且因为它可能返回None
,你没有从Thread
对象得到错误,它只是阻塞)
删除括号以传递函数对象,而不是调用的结果!
thread = Thread(target = processEmail.main) thread.start()
注意:某些IDE(如PyCharm)会自动将括号添加到函数名称中.在那种情况下,这是一个坏主意:)