diff --git a/Lib/multiprocessing/connection.py b/Lib/multiprocessing/connection.py --- a/Lib/multiprocessing/connection.py +++ b/Lib/multiprocessing/connection.py @@ -862,7 +862,7 @@ 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 --- a/Lib/test/test_multiprocessing.py +++ b/Lib/test/test_multiprocessing.py @@ -20,6 +20,7 @@ import logging import struct import operator +import decimal import test.support import test.script_helper @@ -699,6 +700,14 @@ for p in workers: p.join() + def test_timeout(self): + q = multiprocessing.Queue() + start = decimal.Decimal(time.time()) + self.assertRaises(pyqueue.Empty, q.get, True, 0.2) + delta = decimal.Decimal(time.time()) - start + self.assertGreaterEqual(delta, decimal.Decimal(0.19)) + self.assertLessEqual(delta, decimal.Decimal(0.21)) + # # #