summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAntoine Pitrou <solipsis@pitrou.net>2012-03-16 23:23:04 (GMT)
committerAntoine Pitrou <solipsis@pitrou.net>2012-03-16 23:23:04 (GMT)
commit846fd302a0155ca6d277cb274ca6c39d08860013 (patch)
treeba94c7c823a491fc17a0fb0247e73e758592d378
parentd656958915de825f1c1f298fb8183555141e4956 (diff)
downloadcpython-846fd302a0155ca6d277cb274ca6c39d08860013.zip
cpython-846fd302a0155ca6d277cb274ca6c39d08860013.tar.gz
cpython-846fd302a0155ca6d277cb274ca6c39d08860013.tar.bz2
Issue #14335: multiprocessing's custom Pickler subclass now inherits from the C-accelerated implementation.
Patch by sbt.
-rw-r--r--Lib/multiprocessing/forking.py18
-rw-r--r--Misc/NEWS3
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:
diff --git a/Misc/NEWS b/Misc/NEWS
index 470ab42..5672fc31 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -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.