Python 在multiprocessing Manager.dict()中存储进程对象
我创建了这个示例程序来概括我所面临的问题Python 在multiprocessing Manager.dict()中存储进程对象,python,multiprocessing,Python,Multiprocessing,我创建了这个示例程序来概括我所面临的问题 import multiprocessing from multiprocessing import Manager def f (_print): print _print manager = multiprocessing.Manager() dict = manager.dict() dict['process_obj'] = multiprocessing.current_process() print
import multiprocessing
from multiprocessing import Manager
def f (_print):
print _print
manager = multiprocessing.Manager()
dict = manager.dict()
dict['process_obj'] = multiprocessing.current_process()
print dict
if __name__ == '__main__':
process = multiprocessing.Process(target=f, args= ('hello function', ))
process.start()
process.join()
那么,如何在multiprocessing Manager.dict()中存储流程对象?我假设您正在谈论此错误:
hello function
Process Process-1:
Traceback (most recent call last):
File "/usr/local/lib/python2.7/multiprocessing/process.py", line 258, in _bootstrap
self.run()
File "/usr/local/lib/python2.7/multiprocessing/process.py", line 114, in run
self._target(*self._args, **self._kwargs)
File "mp2.py", line 8, in f
dict['process_obj'] = multiprocessing.current_process()
File "<string>", line 2, in __setitem__
File "/usr/local/lib/python2.7/multiprocessing/managers.py", line 758, in _callmethod
conn.send((self._id, methodname, args, kwds))
PicklingError: Can't pickle <type 'instancemethod'>: attribute lookup __builtin__.instancemethod failed
这很好用
dict['process_obj'] = multiprocessing.current_process().ident