From: Giampaolo Rodola' Date: Wed, 17 Apr 2013 11:12:27 +0000 (+0200) Subject: Fix issue #17707: multiprocessing.Queue's get() method does not block for short timeouts. X-Git-Tag: v3.4.0a1~900 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=308307190fa6f81c93ef9bb9d95457d14a6ca098;p=python Fix issue #17707: multiprocessing.Queue's get() method does not block for short timeouts. --- diff --git a/Lib/multiprocessing/connection.py b/Lib/multiprocessing/connection.py index 4dd6502c87..47e21239ce 100644 --- a/Lib/multiprocessing/connection.py +++ b/Lib/multiprocessing/connection.py @@ -862,7 +862,7 @@ else: if hasattr(select, 'poll'): def _poll(fds, timeout): if timeout is not None: - timeout = int(timeout) * 1000 # timeout is in milliseconds + timeout = int(timeout * 1000) # timeout is in milliseconds fd_map = {} pollster = select.poll() for fd in fds: diff --git a/Lib/test/test_multiprocessing.py b/Lib/test/test_multiprocessing.py index 6cda4fa3c8..c696340214 100644 --- a/Lib/test/test_multiprocessing.py +++ b/Lib/test/test_multiprocessing.py @@ -699,6 +699,13 @@ class _TestQueue(BaseTestCase): for p in workers: p.join() + def test_timeout(self): + q = multiprocessing.Queue() + start = time.time() + self.assertRaises(pyqueue.Empty, q.get, True, 0.2) + delta = time.time() - start + self.assertGreaterEqual(delta, 0.19) + # # # diff --git a/Misc/NEWS b/Misc/NEWS index 63f8d4b662..63634dc9bb 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -42,6 +42,9 @@ Core and Builtins Library ------- +- Issue #17707: multiprocessing.Queue's get() method does not block for short + timeouts. + - Issue #17012: shutil.which() no longer fallbacks to the PATH environment variable if empty path argument is specified. Patch by Serhiy Storchaka.