0

我必须在后台启动一个线程,但输出似乎是跟随线程而不是停留在主线程中。我有这样的事情:

import threading

def work()
  while True:
  do stuff

def recieve()
  while True:
  await instruction

#main

recieve()
if instruction == "do work"
  threading.Thread(target=work()).start()

我有许多其他指令可以按顺序接收和处理,但是由于 work() 需要很长时间才能完成,所以我需要线程,现在,我希望在我们继续等待指令时启动一个在后台工作的线程除非这不会发生。发生的情况是焦点保持在新创建的线程上,因此无法接收进一步的指令。

为什么是这样?怎么了?

非常感谢

4

1 回答 1

1

由于无限循环,receive() 永远不会结束;线程不启动。

先启动线程。

if instruction == "do work":
    threading.Thread(target=work).start()
recieve()

()threading.Thread(target=work()).start(). work()使work函数调用在主线程中运行。

于 2013-07-27T16:08:04.687 回答