summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBerker Peksag <berker.peksag@gmail.com>2015-04-08 14:57:44 (GMT)
committerBerker Peksag <berker.peksag@gmail.com>2015-04-08 14:57:44 (GMT)
commit291d7b0284c879b727e6f1c0d0c35a062c316a3a (patch)
treeb49b18071e92fb43db662f52526646524ab860da
parentb8e973f9374524b3065e70bd265da2a8901b4638 (diff)
parent7ecfc82edbe5ccb125f53b92447abd4bc155ba1c (diff)
downloadcpython-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.rst24
-rw-r--r--Lib/multiprocessing/queues.py3
-rw-r--r--Misc/NEWS3
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()
diff --git a/Misc/NEWS b/Misc/NEWS
index 6c7c263..7756bce 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -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 *".