Python 多处理文档示例不起作用

Python multiprocessing docs examples doesn't work

我正在使用 Linux 并安装了 Python 3.9.1 和 3.8.5(在不同的环境中)。我正在尝试关注 the documentation 以获得 multiprocessing 模块。但是,none 个示例有效。

第一个例子是:

from multiprocessing import Pool

def f(x):
    return x*x

if __name__ == '__main__':
    with Pool(5) as p:
        print(p.map(f, [1, 2, 3]))

我创建了一个仅包含该代码和 运行 的文件。结果是:

Traceback (most recent call last):
  File "multiprocessing.py", line 1, in <module>
    from multiprocessing import Pool
  File "/home/helitonmrf/Documents/TEMP/multiprocessing.py", line 1, in <module>
    from multiprocessing import Pool
ImportError: cannot import name 'Pool' from partially initialized module 'multiprocessing' (most likely due to a circular import) (/home/helitonmrf/Documents/TEMP/multiprocessing.py)

使用以下代码尝试上下文部分:

import multiprocessing as mp

def foo(q):
    q.put('hello')

if __name__ == '__main__':
    mp.set_start_method('spawn')
    q = mp.Queue()
    p = mp.Process(target=foo, args=(q,))
    p.start()
    print(q.get())
    p.join()

也不起作用,我得到:

Traceback (most recent call last):
  File "multiprocessing.py", line 9, in <module>
    mp.set_start_method('spawn')
AttributeError: module 'multiprocessing' has no attribute 'set_start_method'

怎么回事?

您遇到的问题是因为您将文件命名为 multiprocessing.py,这也是您尝试使用的库的名称。

Python 在查找导入库时首先查找当前目录。重命名您的文件(如果存在,请务必删除 multiprocessing.pyc)。