[Python-checkins] cpython (3.3): fix for previous commit related to issue 10527 which didn't have the intended
giampaolo.rodola
python-checkins at python.org
Mon Jan 14 02:24:35 CET 2013
http://hg.python.org/cpython/rev/88fadc0d7b20
changeset: 81498:88fadc0d7b20
branch: 3.3
parent: 81495:e1c81ab5ad97
user: Giampaolo Rodola' <g.rodola at gmail.com>
date: Mon Jan 14 02:24:25 2013 +0100
summary:
fix for previous commit related to issue 10527 which didn't have the intended effect as per http://bugs.python.org/issue10527#msg179895
files:
Lib/multiprocessing/connection.py | 48 +++++++++---------
Lib/test/test_multiprocessing.py | 2 +-
2 files changed, 26 insertions(+), 24 deletions(-)
diff --git a/Lib/multiprocessing/connection.py b/Lib/multiprocessing/connection.py
--- a/Lib/multiprocessing/connection.py
+++ b/Lib/multiprocessing/connection.py
@@ -509,27 +509,6 @@
return c1, c2
else:
- if hasattr(select, 'poll'):
- def _poll(fds, timeout):
- if timeout is not None:
- timeout = int(timeout) * 1000 # timeout is in milliseconds
- fd_map = {}
- pollster = select.poll()
- for fd in fds:
- pollster.register(fd, select.POLLIN)
- if hasattr(fd, 'fileno'):
- fd_map[fd.fileno()] = fd
- else:
- fd_map[fd] = fd
- ls = []
- for fd, event in pollster.poll(timeout):
- if event & select.POLLNVAL:
- raise ValueError('invalid file descriptor %i' % fd)
- ls.append(fd_map[fd])
- return ls
- else:
- def _poll(fds, timeout):
- return select.select(fds, [], [], timeout)[0]
def Pipe(duplex=True):
'''
@@ -883,6 +862,29 @@
else:
+ if hasattr(select, 'poll'):
+ def _poll(fds, timeout):
+ if timeout is not None:
+ timeout = int(timeout) * 1000 # timeout is in milliseconds
+ fd_map = {}
+ pollster = select.poll()
+ for fd in fds:
+ pollster.register(fd, select.POLLIN)
+ if hasattr(fd, 'fileno'):
+ fd_map[fd.fileno()] = fd
+ else:
+ fd_map[fd] = fd
+ ls = []
+ for fd, event in pollster.poll(timeout):
+ if event & select.POLLNVAL:
+ raise ValueError('invalid file descriptor %i' % fd)
+ ls.append(fd_map[fd])
+ return ls
+ else:
+ def _poll(fds, timeout):
+ return select.select(fds, [], [], timeout)[0]
+
+
def wait(object_list, timeout=None):
'''
Wait till an object in object_list is ready/readable.
@@ -891,12 +893,12 @@
'''
if timeout is not None:
if timeout <= 0:
- return select.select(object_list, [], [], 0)[0]
+ return _poll(object_list, 0)
else:
deadline = time.time() + timeout
while True:
try:
- return select.select(object_list, [], [], timeout)[0]
+ return _poll(object_list, timeout)
except OSError as e:
if e.errno != errno.EINTR:
raise
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
@@ -3244,7 +3244,7 @@
from multiprocessing.connection import wait
expected = 3
- sorted_ = lambda l: sorted(l, key=lambda x: isinstance(x, int))
+ sorted_ = lambda l: sorted(l, key=lambda x: id(x))
sem = multiprocessing.Semaphore(0)
a, b = multiprocessing.Pipe()
p = multiprocessing.Process(target=self.signal_and_sleep,
--
Repository URL: http://hg.python.org/cpython
More information about the Python-checkins
mailing list