]> granicus.if.org Git - python/commitdiff
Issue #17025: Add dumps() and loads() to ForkingPickler.
authorCharles-François Natali <cf.natali@gmail.com>
Sun, 24 Mar 2013 14:21:49 +0000 (15:21 +0100)
committerCharles-François Natali <cf.natali@gmail.com>
Sun, 24 Mar 2013 14:21:49 +0000 (15:21 +0100)
Lib/multiprocessing/connection.py
Lib/multiprocessing/forking.py

index 9a357f6366d643a5f30a7e5960863187a4177543..4dd6502c87d073d84dac9b61d7de49289115e51a 100644 (file)
@@ -12,7 +12,6 @@ __all__ = [ 'Client', 'Listener', 'Pipe', 'wait' ]
 import io
 import os
 import sys
-import pickle
 import select
 import socket
 import struct
@@ -202,9 +201,7 @@ class _ConnectionBase:
         """Send a (picklable) object"""
         self._check_closed()
         self._check_writable()
-        buf = io.BytesIO()
-        ForkingPickler(buf, pickle.HIGHEST_PROTOCOL).dump(obj)
-        self._send_bytes(buf.getbuffer())
+        self._send_bytes(ForkingPickler.dumps(obj))
 
     def recv_bytes(self, maxlength=None):
         """
@@ -249,7 +246,7 @@ class _ConnectionBase:
         self._check_closed()
         self._check_readable()
         buf = self._recv_bytes()
-        return pickle.loads(buf.getbuffer())
+        return ForkingPickler.loads(buf.getbuffer())
 
     def poll(self, timeout=0.0):
         """Whether there is any input available to be read"""
index 7bda412e8dffad3d8efb313c8b39a4d433df0e0a..37c9a10e7cc97ff2fc21c43c722102cdfe498fbd 100644 (file)
@@ -7,7 +7,9 @@
 # Licensed to PSF under a Contributor Agreement.
 #
 
+import io
 import os
+import pickle
 import sys
 import signal
 import errno
@@ -44,6 +46,15 @@ class ForkingPickler(Pickler):
     def register(cls, type, reduce):
         cls._extra_reducers[type] = reduce
 
+    @staticmethod
+    def dumps(obj):
+        buf = io.BytesIO()
+        ForkingPickler(buf, pickle.HIGHEST_PROTOCOL).dump(obj)
+        return buf.getbuffer()
+
+    loads = pickle.loads
+
+
 def _reduce_method(m):
     if m.__self__ is None:
         return getattr, (m.__class__, m.__func__.__name__)