0
我有一个线程从输入队列中读取数据,对它执行某些操作,然后将结果放到输出队列中以供以后使用。但是,它看起来像线程只能写入输出队列一次。我究竟做错了什么?以下是我的代码的高度简化的自包含版本。python线程停止写入输出队列
import queue
import threading
def do_work(input_queue,output_queue):
input_number = input_queue.get()
output_number = input_number ** 2
input_queue.task_done()
output_queue.put(output_number)
input_queue = queue.LifoQueue()
output_queue = queue.LifoQueue()
t = threading.Thread(name="Some thread", target=do_work, args=(input_queue,output_queue))
t.start()
for i in range(1000):
input_queue.put(i)
if output_queue.empty():
print('input: {0}'.format(i))
else:
result = output_queue.get()
print('result: {0}'.format(result))
output_queue.task_done()
这导致下面的输出:
input: 0
result: 0
input: 2
input: 3
input: 4
...
input: 999
“结果”仅印刷一次,但我希望它为每个输入被打印多次,一次。
你需要用'do_work()'在某种循环中包装代码。否则,它会执行一次然后返回,这会导致线程退出。 – 2017-10-29 04:10:07