diff -r 1238cdd288d2 Lib/multiprocessing/queues.py --- a/Lib/multiprocessing/queues.py Tue Nov 08 20:38:11 2011 +0100 +++ b/Lib/multiprocessing/queues.py Tue Nov 08 21:00:25 2011 +0100 @@ -129,7 +129,11 @@ if not self._rlock.acquire(block, timeout): raise Empty try: - if not self._poll(block and (deadline-time.time()) or 0.0): + if block: + timeout = deadline - time.time() + if timeout < 0 or not self._poll(timeout): + raise Empty + elif not self._poll(): raise Empty res = self._recv() self._sem.release()