python线程,使用threading.thread进行多线程处理

时间:2013-07-27 16:04:42

标签: python multithreading backgroundworker python-multithreading

我必须在后台启动一个线程,但输出似乎是在线程之后而不是坚持在main中。我有这样的事情:

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()需要很长时间才能完成我需要线程,现在,我希望在我们继续的时候启动一个在后台工作的线程除非没有这种情况,否则等待指令。发生的事情是焦点保留在新创建的线程上,因此无法接收进一步的指令。

这是为什么?有什么问题?

非常感谢

1 个答案:

答案 0 :(得分:1)

receive()永远不会因为无限循环而结束;线程无法启动。

首先启动线程。

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

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