]> granicus.if.org Git - python/commitdiff
Fix issue #17707: multiprocessing.Queue's get() method does not block for short timeouts.
authorGiampaolo Rodola' <g.rodola@gmail.com>
Wed, 17 Apr 2013 11:12:27 +0000 (13:12 +0200)
committerGiampaolo Rodola' <g.rodola@gmail.com>
Wed, 17 Apr 2013 11:12:27 +0000 (13:12 +0200)
Lib/multiprocessing/connection.py
Lib/test/test_multiprocessing.py
Misc/NEWS

index 4dd6502c87d073d84dac9b61d7de49289115e51a..47e21239ce8d85746e31acc2ea34e6f89d4b8db3 100644 (file)
@@ -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:
index 6cda4fa3c808e9843cc546d1d4ebdf12be430036..c69634021466212e182f099555565324d5e5f536 100644 (file)
@@ -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)
+
 #
 #
 #
index 63f8d4b6627a893c74b8462a552f1c7db1819f9a..63634dc9bbdd658575fc3f36e0a2e325dd8b4b20 100644 (file)
--- 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.