[3.6] bpo-30595: Fix multiprocessing.Queue.get(timeout) (#2027) (#2881) · python/cpython@e42339d (original) (raw)

Skip to content

Provide feedback

Saved searches

Use saved searches to filter your results more quickly

Sign up

Appearance settings

Commit e42339d

* 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@gmail.com (cherry picked from commit 1b7863c) * 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 8f6eeaf)

File tree

2 files changed

lines changed

2 files changed

lines changed

Lines changed: 1 addition & 1 deletion

Original file line number Diff line number Diff line change
@@ -101,7 +101,7 @@ def get(self, block=True, timeout=None):
101 101 try:
102 102 if block:
103 103 timeout = deadline - time.time()
104 -if timeout < 0 or not self._poll(timeout):
104 +if not self._poll(timeout):
105 105 raise Empty
106 106 elif not self._poll():
107 107 raise Empty

Lines changed: 3 additions & 0 deletions

Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
1 +multiprocessing.Queue.get() with a timeout now polls its reader in non-
2 +blocking mode if it succeeded to aquire the lock but the acquire took longer
3 +than the timeout.