Issue #23400: Raise same exception on both Python 2 and 3 if sem_open is not available.

Patch by Davin Potts.
This commit is contained in:
Berker Peksag 2015-04-08 17:56:30 +03:00
parent 52c0c3382d
commit 7ecfc82edb
3 changed files with 21 additions and 9 deletions

View File

@ -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
~~~~~~~~~~~~~~~~~~~~~~~~~~~~

View File

@ -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()

View File

@ -27,6 +27,9 @@ Library
- Issue #23881: urllib.request.ftpwrapper constructor now closes the socket if
the FTP connection failed to fix a ResourceWarning.
- Issue #23400: Raise same exception on both Python 2 and 3 if sem_open is not
available. Patch by Davin Potts.
- Issue #15133: _tkinter.tkapp.getboolean() now supports Tcl_Obj and always
returns bool. tkinter.BooleanVar now validates input values (accepted bool,
int, str, and Tcl_Obj). tkinter.BooleanVar.get() now always returns bool.