diff options
author | Davin Potts <python@discontinuity.net> | 2016-09-09 23:03:10 (GMT) |
---|---|---|
committer | Davin Potts <python@discontinuity.net> | 2016-09-09 23:03:10 (GMT) |
commit | 5458647bb867770fc3d830a618cef6994fdfac4b (patch) | |
tree | f16fef69f4ddf36872152328fe302d22e2258763 /Lib/multiprocessing/reduction.py | |
parent | f1024f74250d534d16a9970e5093b3b4e693b398 (diff) | |
download | cpython-5458647bb867770fc3d830a618cef6994fdfac4b.zip cpython-5458647bb867770fc3d830a618cef6994fdfac4b.tar.gz cpython-5458647bb867770fc3d830a618cef6994fdfac4b.tar.bz2 |
Issue #28053: Applying refactorings, docs and other cleanup to follow.
Diffstat (limited to 'Lib/multiprocessing/reduction.py')
-rw-r--r-- | Lib/multiprocessing/reduction.py | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/Lib/multiprocessing/reduction.py b/Lib/multiprocessing/reduction.py index 8f209b4..c043c9a 100644 --- a/Lib/multiprocessing/reduction.py +++ b/Lib/multiprocessing/reduction.py @@ -7,6 +7,7 @@ # Licensed to PSF under a Contributor Agreement. # +from abc import ABCMeta, abstractmethod import copyreg import functools import io @@ -238,3 +239,36 @@ else: fd = df.detach() return socket.socket(family, type, proto, fileno=fd) register(socket.socket, _reduce_socket) + + +class AbstractReducer(metaclass=ABCMeta): + '''Abstract base class for use in implementing a Reduction class + suitable for use in replacing the standard reduction mechanism + used in multiprocessing.''' + ForkingPickler = ForkingPickler + register = register + dump = dump + send_handle = send_handle + recv_handle = recv_handle + + if sys.platform == 'win32': + steal_handle = steal_handle + duplicate = duplicate + DupHandle = DupHandle + else: + sendfds = sendfds + recvfds = recvfds + DupFd = DupFd + + _reduce_method = _reduce_method + _reduce_method_descriptor = _reduce_method_descriptor + _rebuild_partial = _rebuild_partial + _reduce_socket = _reduce_socket + _rebuild_socket = _rebuild_socket + + def __init__(self, *args): + register(type(_C().f), _reduce_method) + register(type(list.append), _reduce_method_descriptor) + register(type(int.__add__), _reduce_method_descriptor) + register(functools.partial, _reduce_partial) + register(socket.socket, _reduce_socket) |