summaryrefslogtreecommitdiffstats
path: root/Lib/multiprocessing
diff options
context:
space:
mode:
authorGiampaolo Rodola' <g.rodola@gmail.com>2013-01-14 01:24:25 (GMT)
committerGiampaolo Rodola' <g.rodola@gmail.com>2013-01-14 01:24:25 (GMT)
commit67da89446a0b3f008a15e6a510925921ca6f9303 (patch)
tree59449aad59df582e90c4571dc7961eb901882f2f /Lib/multiprocessing
parented9e06cb21c4437aa87bb23c6509d3dd3274d0fc (diff)
downloadcpython-67da89446a0b3f008a15e6a510925921ca6f9303.zip
cpython-67da89446a0b3f008a15e6a510925921ca6f9303.tar.gz
cpython-67da89446a0b3f008a15e6a510925921ca6f9303.tar.bz2
fix for previous commit related to issue 10527 which didn't have the intended effect as per http://bugs.python.org/issue10527#msg179895
Diffstat (limited to 'Lib/multiprocessing')
-rw-r--r--Lib/multiprocessing/connection.py48
1 files changed, 25 insertions, 23 deletions
diff --git a/Lib/multiprocessing/connection.py b/Lib/multiprocessing/connection.py
index 25b0326..1d65f46 100644
--- a/Lib/multiprocessing/connection.py
+++ b/Lib/multiprocessing/connection.py
@@ -509,27 +509,6 @@ if sys.platform != 'win32':
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 @@ if sys.platform == 'win32':
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 @@ else:
'''
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