diff options
-rw-r--r-- | Lib/multiprocessing/forking.py | 18 | ||||
-rw-r--r-- | Misc/NEWS | 3 |
2 files changed, 12 insertions, 9 deletions
diff --git a/Lib/multiprocessing/forking.py b/Lib/multiprocessing/forking.py index b7de567..020508a 100644 --- a/Lib/multiprocessing/forking.py +++ b/Lib/multiprocessing/forking.py @@ -55,18 +55,18 @@ def assert_spawning(self): # Try making some callable types picklable # -from pickle import _Pickler as Pickler +from pickle import Pickler +from copyreg import dispatch_table + class ForkingPickler(Pickler): - dispatch = Pickler.dispatch.copy() + _extra_reducers = {} + def __init__(self, *args): + Pickler.__init__(self, *args) + self.dispatch_table = dispatch_table.copy() + self.dispatch_table.update(self._extra_reducers) @classmethod def register(cls, type, reduce): - def dispatcher(self, obj): - rv = reduce(obj) - if isinstance(rv, str): - self.save_global(obj, rv) - else: - self.save_reduce(obj=obj, *rv) - cls.dispatch[type] = dispatcher + cls._extra_reducers[type] = reduce def _reduce_method(m): if m.__self__ is None: @@ -27,6 +27,9 @@ Core and Builtins Library ------- +- Issue #14335: multiprocessing's custom Pickler subclass now inherits from + the C-accelerated implementation. Patch by sbt. + - Issue #10484: Fix the CGIHTTPServer's PATH_INFO handling problem. - Issue #11199: Fix the with urllib which hangs on particular ftp urls. |