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



我使用的是Linux,并安装了Python 3.9.1和3.8.5(在不同的环境中(。我正在努力遵循multiprocessing模块的文档。然而,这些例子都不起作用。

第一个例子是:

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,请确保将其删除(。

最新更新