Géry <[email protected]> added the comment:
@George Xie
There is an issue with the Python workaround
`multiprocessing.reduction.register(types.MethodType, my_reduce)` that you
proposed. If you then instantiate a `multiprocessing.Manager()` you get this
exception:
> python
Python 3.7.3 (v3.7.3:ef4ec6ed12, Mar 25 2019, 22:22:05) [MSC v.1916 64 bit
(AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import multiprocessing
>>> import types
>>> def my_reduce(obj):
... return (obj.__func__.__get__, (obj.__self__,))
...
>>> multiprocessing.reduction.register(types.MethodType, my_reduce)
>>> multiprocessing.Manager()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Program Files\Python37\lib\multiprocessing\context.py", line 56, in
Manager
m.start()
File "C:\Program Files\Python37\lib\multiprocessing\managers.py", line 543,
in start
self._process.start()
File "C:\Program Files\Python37\lib\multiprocessing\process.py", line 112, in
start
self._popen = self._Popen(self)
File "C:\Program Files\Python37\lib\multiprocessing\context.py", line 322, in
_Popen
return Popen(process_obj)
File "C:\Program Files\Python37\lib\multiprocessing\popen_spawn_win32.py",
line 89, in __init__
reduction.dump(process_obj, to_child)
File "C:\Program Files\Python37\lib\multiprocessing\reduction.py", line 60,
in dump
ForkingPickler(file, protocol).dump(obj)
_pickle.PicklingError: Can't pickle <function BaseManager._run_server at
0x000001AEF8ED1D90>: it's not the same object as
multiprocessing.managers.BaseManager._run_server
>>> 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 115, in
_main
self = reduction.pickle.load(from_parent)
EOFError: Ran out of input
----------
_______________________________________
Python tracker <[email protected]>
<https://bugs.python.org/issue37297>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com