Python 多处理队列未显示结果

时间:2020-12-29 01:12:58

标签: python queue python-multiprocessing

我正在尝试运行一个单独的 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,我必须将代码作为一个脚本运行。

0 个答案:

没有答案
相关问题