首页 > 解决方案 > python中具有多处理功能的任何代码都不起作用

问题描述

我有一个简单的多处理代码

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]))

此代码重复出现相同的错误(如下所示)。不仅如此,任何内部调用多处理模块的库/函数(例如,reverse_geocoder,concurrent.futures 中的 ProcessPoolExecutor)都会显示相同的错误,而 ThreadPoolExecutor 运行得很好!!!我正在尝试在 Pycharm 中运行它,同样的代码在 Pycharm 中的另一台 PC 上运行良好请帮助。 错误

Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "C:\Program Files\Python37\lib\multiprocessing\spawn.py", line 105, in spawn_main
    exitcode = _main(fd)
  File "C:\Program Files\Python37\lib\multiprocessing\spawn.py", line 114, in _main
    prepare(preparation_data)
  File "C:\Program Files\Python37\lib\multiprocessing\spawn.py", line 225, in prepare
    _fixup_main_from_path(data['init_main_from_path'])
  File "C:\Program Files\Python37\lib\multiprocessing\spawn.py", line 277, in _fixup_main_from_path
    run_name="__mp_main__")
  File "C:\Program Files\Python37\lib\runpy.py", line 261, in run_path
    code, fname = _get_code_from_file(run_name, path_name)
  File "C:\Program Files\Python37\lib\runpy.py", line 231, in _get_code_from_file
    with open(fname, "rb") as f:
OSError: [Errno 22] Invalid argument: 'D:\\p\\r\\i\\b\\<input>'

标签: pythonpython-3.xparallel-processingmultiprocessingprocess-pool

解决方案


推荐阅读