]> 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:08:59 +0000 (13:08 +0200)
committerGiampaolo Rodola' <g.rodola@gmail.com>
Wed, 17 Apr 2013 11:08:59 +0000 (13:08 +0200)
Lib/multiprocessing/connection.py
Lib/test/test_multiprocessing.py
Misc/NEWS

index 1d65f46a5bd3acf8efcc8fabbe2f2aadfe4cbbea..df57906f13774156959e288b6051ffcf2a105bf3 100644 (file)
@@ -865,7 +865,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 3fb07f6a540b5d12eb9f50ef20be06d892aeb659..14ec61c39323bc4459a8caa850f9d4e1eb6e1faf 100644 (file)
@@ -698,6 +698,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 0b118d50937c55e415edb9a3a6cab5a01ab317fb..be59be013c43cdb101e45ccf0f200c007b7dd36e 100644 (file)
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -29,6 +29,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.