首页 > 解决方案 > 带有进程和错误的多处理:TypeError: can't pickle _thread.lock objects

问题描述

我只是无法进一步解决问题,我不明白为什么。我做多处理,这在一个小例子中也很有效。但是当我将它构建到“大”代码中时,它就不再起作用了。也许有人可以“更容易”地向我解释这个错误,或者告诉我我做错了什么?

Blabla Errorlog...
...

File "C:\Users\XXX\eclipse-workspace\ADAScarfs_v1.4\fem\_ModelGenerator.py", line 333, in _generateNodeObj
nodesAdh.start()
File "C:\Anaconda3\lib\multiprocessing\process.py", line 105, in start
self._popen = self._Popen(self)
File "C:\Anaconda3\lib\multiprocessing\context.py", line 223, in _Popen
return _default_context.get_context().Process._Popen(process_obj)
File "C:\Anaconda3\lib\multiprocessing\context.py", line 322, in _Popen
return Popen(process_obj)
File "C:\Anaconda3\lib\multiprocessing\popen_spawn_win32.py", line 65, in __init__
reduction.dump(process_obj, to_child)
File "C:\Anaconda3\lib\multiprocessing\reduction.py", line 60, in dump
ForkingPickler(file, protocol).dump(obj)
TypeError: can't pickle _thread.lock objects
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "C:\Anaconda3\lib\multiprocessing\spawn.py", line 105, in spawn_main
exitcode = _main(fd)
File "C:\Anaconda3\lib\multiprocessing\spawn.py", line 115, in _main
self = reduction.pickle.load(from_parent)
EOFError: Ran out of input

发生错误的代码:

nodesAdh = multiprocessing.Process(target=myScarfMeshR3D.generateAdhesiveNodesObject, args=(_sectionAdh,))
        nodesAdh.start()

标签: pythonprocessmultiprocessingpickle

解决方案


推荐阅读