我正在尝试运行一个单独的 Python 进程并将结果存储在队列中。我可以通过两种方式提取结果:只运行一次 queue.get()
或使用 while 循环并迭代队列直到它为空。
在下面的代码中,如果 first=True
使用第一种方法,如果 first=False
使用第二种方法。
from multiprocessing import Process, Queue
def foo1(queue):
queue.put(1)
def main(first=False):
queue = Queue()
p = Process(target=foo1, args=(queue,))
p.start()
if first:
a = queue.get()
print(a)
else:
while not queue.empty():
print(queue.get())
p.join()
if __name__ == "__main__":
main()
问题:为什么第一种方法可以正确打印 1
而第二种方法不能正确打印?他们不应该是平等的吗?
我使用的是 Windows 10。我在交互式控制台和 shell 终端中都注意到了这种行为。
注意:由于提到的错误 here,我必须将代码作为一个脚本运行。