PyCharm中使用multiprocessing报错,该如何解决?
PyCharm中使用multiprocessing模块遇到Pickle报错问题
在PyCharm中运行以下multiprocessing代码时出现报错,但相同代码在Jupyter Notebook中可正常运行,现有搜索到的解决方案均无效,寻求帮助。
代码示例
import multiprocessing import time inicio = time.perf_counter() def calcula_soma(): print('Iniciando a Funcao...') soma = 0 for i in range(50_000_000): soma = soma + 1 print('Calculo Finalizado!') if __name__ == '__main__': cod1 = multiprocessing.Process(target=calcula_soma) cod2 = multiprocessing.Process(target=calcula_soma) cod1.start() cod2.start() cod1.join() cod2.join() fim = time.perf_counter() total = round(fim - inicio, 2) print(f'Tempo: {total}')
报错信息
Traceback (most recent call last): File "C:....\Anaconda3\envs\teste\lib\code.py", line 90, in runcode exec(code, self.locals) File "<input>", line 1, in <module> File "C:....\AppData\Local\JetBrains\PyCharm 2022.2.4\plugins\python\helpers\pydev\_pydev_bundle\pydev_umd.py", line 198, in runfile pydev_imports.execfile(filename, global_vars, local_vars) # execute the script File "C:....\AppData\Local\JetBrains\PyCharm 2022.2.4\plugins\python\helpers\pydev\_pydev_imps\_pydev_execfile.py", line 18, in execfile exec(compile(contents+"\n", file, 'exec'), glob, loc) File "C:....\PycharmProjects\pythonProject\teste.py", line 19, in <module> cod1.start() File "C:....\Anaconda3\envs\teste\lib\multiprocessing\process.py", line 121, in start self._popen = self._Popen(self) File "C:....\Anaconda3\envs\teste\lib\multiprocessing\context.py", line 224, in _Popen return _default_context.get_context().Process._Popen(process_obj) File "C:....\Anaconda3\envs\teste\lib\multiprocessing\context.py", line 336, in _Popen return Popen(process_obj) File "C:....\Anaconda3\envs\teste\lib\multiprocessing\popen_spawn_win32.py", line 93, in __init__ reduction.dump(process_obj, to_child) File "C:....\Anaconda3\envs\teste\lib\multiprocessing\reduction.py", line 60, in dump ForkingPickler(file, protocol).dump(obj) _pickle.PicklingError: Can't pickle <function calcula_soma at 0x0000021CE30DE0E0>: attribute lookup calcula_soma on __main__ failed Traceback (most recent call last): File "<string>", line 1, in <module> File "C:....\Anaconda3\envs\teste\lib\multiprocessing\spawn.py", line 116, in spawn_main exitcode = _main(fd, parent_sentinel) File "C:....\Anaconda3\envs\teste\lib\multiprocessing\spawn.py", line 126, in _main self = reduction.pickle.load(from_parent) EOFError: Ran out of input
内容的提问来源于stack exchange,提问作者Romeu Fronzaroli
相关产品推荐
相关产品推荐

