Python 3.x 无法读取基本多处理程序中的队列

Python 3.x 无法读取基本多处理程序中的队列,python-3.x,python-multiprocessing,Python 3.x,Python Multiprocessing,我不明白为什么运行此基本程序时队列对象仍然为空: from multiprocessing import Process, Queue def f(q, a, b): q.put(a * b) return q = Queue() p = Process(target=f, args=(q,1,2)) p.start() p.join() q.qsize() # returns 0 你知道怎么了吗?就好像在进程停止后队列变空了。您是在Windows上运行的吗?获取所有顶级

我不明白为什么运行此基本程序时队列对象仍然为空:

from multiprocessing import Process, Queue

def f(q, a, b):
    q.put(a * b)
    return

q = Queue()
p = Process(target=f, args=(q,1,2))
p.start()
p.join()

q.qsize() # returns 0

你知道怎么了吗?就好像在进程停止后队列变空了。

您是在Windows上运行的吗?获取所有顶级代码(从
q=Queue()
开始),并将其置于
if\uuuuu name\uuuuu=“\uuuuu main\uuuu”:
语句下,否则创建时将在子进程中执行(在非分叉操作系统上)。这在我的linux机器上工作。是的,我正在Windows下运行它,并在解释器模式下执行它(在Spyder中),而不是作为脚本。为什么python解释器不能创建子进程?它通常可以创建子进程,而不是
多处理.Process
。在windows中,当执行新的python解释器时,父进程的状态被Pickle并发送给工作进程进行初始化。Pickle Pickle会对定义子进程的模块的数据和引用进行Pickle从解释器运行时,文件系统中没有保存代码的文件,因此pickle会失败。有关一些详细信息,请参阅