diff options
author | Berker Peksag <berker.peksag@gmail.com> | 2015-04-08 14:57:44 (GMT) |
---|---|---|
committer | Berker Peksag <berker.peksag@gmail.com> | 2015-04-08 14:57:44 (GMT) |
commit | 291d7b0284c879b727e6f1c0d0c35a062c316a3a (patch) | |
tree | b49b18071e92fb43db662f52526646524ab860da | |
parent | b8e973f9374524b3065e70bd265da2a8901b4638 (diff) | |
parent | 7ecfc82edbe5ccb125f53b92447abd4bc155ba1c (diff) | |
download | cpython-291d7b0284c879b727e6f1c0d0c35a062c316a3a.zip cpython-291d7b0284c879b727e6f1c0d0c35a062c316a3a.tar.gz cpython-291d7b0284c879b727e6f1c0d0c35a062c316a3a.tar.bz2 |
Issue #23400: Raise same exception on both Python 2 and 3 if sem_open is not available.
Patch by Davin Potts.
-rw-r--r-- | Doc/library/multiprocessing.rst | 24 | ||||
-rw-r--r-- | Lib/multiprocessing/queues.py | 3 | ||||
-rw-r--r-- | Misc/NEWS | 3 |
3 files changed, 21 insertions, 9 deletions
diff --git a/Doc/library/multiprocessing.rst b/Doc/library/multiprocessing.rst index c5b53df..8703f8f 100644 --- a/Doc/library/multiprocessing.rst +++ b/Doc/library/multiprocessing.rst @@ -262,14 +262,6 @@ that only one process prints to standard output at a time:: Without using the lock output from the different processes is liable to get all mixed up. -.. note:: - - Some of this package's functionality requires a functioning shared semaphore - implementation on the host operating system. Without one, the - :mod:`multiprocessing.synchronize` module will be disabled, and attempts to - import it will result in an :exc:`ImportError`. See - :issue:`3770` for additional information. - Sharing state between processes ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -808,6 +800,14 @@ For an example of the usage of queues for interprocess communication see immediately without waiting to flush enqueued data to the underlying pipe, and you don't care about lost data. + .. note:: + + This class's functionality requires a functioning shared semaphore + implementation on the host operating system. Without one, the + functionality in this class will be disabled, and attempts to + instantiate a :class:`Queue` will result in an :exc:`ImportError`. See + :issue:`3770` for additional information. The same holds true for any + of the specialized queue types listed below. .. class:: SimpleQueue() @@ -1183,6 +1183,14 @@ object -- see :ref:`multiprocessing-managers`. This differs from the behaviour of :mod:`threading` where SIGINT will be ignored while the equivalent blocking calls are in progress. +.. note:: + + Some of this package's functionality requires a functioning shared semaphore + implementation on the host operating system. Without one, the + :mod:`multiprocessing.synchronize` module will be disabled, and attempts to + import it will result in an :exc:`ImportError`. See + :issue:`3770` for additional information. + Shared :mod:`ctypes` Objects ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/Lib/multiprocessing/queues.py b/Lib/multiprocessing/queues.py index c07ad40..b004a6a 100644 --- a/Lib/multiprocessing/queues.py +++ b/Lib/multiprocessing/queues.py @@ -35,7 +35,8 @@ class Queue(object): def __init__(self, maxsize=0, *, ctx): if maxsize <= 0: - maxsize = _multiprocessing.SemLock.SEM_VALUE_MAX + # Can raise ImportError (see issues #3770 and #23400) + from .synchronize import SEM_VALUE_MAX as maxsize self._maxsize = maxsize self._reader, self._writer = connection.Pipe(duplex=False) self._rlock = ctx.Lock() @@ -19,6 +19,9 @@ Core and Builtins Library ------- +- Issue #23400: Raise same exception on both Python 2 and 3 if sem_open is not + available. Patch by Davin Potts. + - Issue #10838: The subprocess now module includes SubprocessError and TimeoutError in its list of exported names for the users wild enough to use "from subprocess import *". |