changeset: 95486:749fd043de95 branch: 3.4 parent: 95483:2b62f8954566 user: Berker Peksag date: Wed Apr 08 17:56:30 2015 +0300 files: Doc/library/multiprocessing.rst Lib/multiprocessing/queues.py Misc/NEWS description: Issue #23400: Raise same exception on both Python 2 and 3 if sem_open is not available. Patch by Davin Potts. diff -r 2b62f8954566 -r 749fd043de95 Doc/library/multiprocessing.rst --- a/Doc/library/multiprocessing.rst Wed Apr 08 11:24:27 2015 +0300 +++ b/Doc/library/multiprocessing.rst Wed Apr 08 17:56:30 2015 +0300 @@ -262,14 +262,6 @@ 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 @@ 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 @@ 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 -r 2b62f8954566 -r 749fd043de95 Lib/multiprocessing/queues.py --- a/Lib/multiprocessing/queues.py Wed Apr 08 11:24:27 2015 +0300 +++ b/Lib/multiprocessing/queues.py Wed Apr 08 17:56:30 2015 +0300 @@ -35,7 +35,8 @@ 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 -r 2b62f8954566 -r 749fd043de95 Misc/NEWS --- a/Misc/NEWS Wed Apr 08 11:24:27 2015 +0300 +++ b/Misc/NEWS Wed Apr 08 17:56:30 2015 +0300 @@ -27,6 +27,9 @@ - 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.