[Python-checkins] cpython: 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:19 CET 2013


http://hg.python.org/cpython/rev/831f49cc00fc
changeset:   81497:831f49cc00fc
user:        Giampaolo Rodola' <g.rodola at gmail.com>
date:        Mon Jan 14 02:24:05 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
@@ -3263,7 +3263,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