[Python-checkins] [3.6] bpo-30595: Fix multiprocessing.Queue.get(timeout) (#2027) (#2881)

Victor Stinner webhook-mailer at python.org
Tue Jul 25 23:38:25 EDT 2017


https://github.com/python/cpython/commit/e42339d3a08a8fde3349722def85d7a8e49899be
commit: e42339d3a08a8fde3349722def85d7a8e49899be
branch: 3.6
author: Victor Stinner <victor.stinner at gmail.com>
committer: GitHub <noreply at github.com>
date: 2017-07-26T05:38:22+02:00
summary:

[3.6] bpo-30595: Fix multiprocessing.Queue.get(timeout) (#2027) (#2881)

* bpo-30595: Fix multiprocessing.Queue.get(timeout) (#2027)

multiprocessing.Queue.get() with a timeout now polls its reader in
non-blocking mode if it succeeded to aquire the lock but the acquire
took longer than the timeout.

Co-Authored-By: Grzegorz Grzywacz <grzgrzgrz3 at gmail.com>
(cherry picked from commit 1b7863c3b6519c6e134c28cab8b8af0dea43e375)

* bpo-30595: Increase test_queue_feeder_donot_stop_onexc() timeout (#2148)

_test_multiprocessing.test_queue_feeder_donot_stop_onexc() now uses a
timeout of 1 second on Queue.get(), instead of 0.1 second, for slow
buildbots.
(cherry picked from commit 8f6eeaf21cdf4aea25fdefeec814a1ce07453fe9)

files:
A Misc/NEWS.d/next/Library/2017-07-26-04-46-12.bpo-30595.-zJ7d8.rst
M Lib/multiprocessing/queues.py

diff --git a/Lib/multiprocessing/queues.py b/Lib/multiprocessing/queues.py
index 76684172528..513807cafec 100644
--- a/Lib/multiprocessing/queues.py
+++ b/Lib/multiprocessing/queues.py
@@ -101,7 +101,7 @@ def get(self, block=True, timeout=None):
             try:
                 if block:
                     timeout = deadline - time.time()
-                    if timeout < 0 or not self._poll(timeout):
+                    if not self._poll(timeout):
                         raise Empty
                 elif not self._poll():
                     raise Empty
diff --git a/Misc/NEWS.d/next/Library/2017-07-26-04-46-12.bpo-30595.-zJ7d8.rst b/Misc/NEWS.d/next/Library/2017-07-26-04-46-12.bpo-30595.-zJ7d8.rst
new file mode 100644
index 00000000000..4a2a3901cc6
--- /dev/null
+++ b/Misc/NEWS.d/next/Library/2017-07-26-04-46-12.bpo-30595.-zJ7d8.rst
@@ -0,0 +1,3 @@
+multiprocessing.Queue.get() with a timeout now polls its reader in non-
+blocking mode if it succeeded to aquire the lock but the acquire took longer
+than the timeout.



More information about the Python-checkins mailing list