[Python-checkins] cpython: Issue #18934: Use poll/select-based selectors for multiprocessing.Connection,

charles-francois.natali python-checkins at python.org
Sun Sep 8 11:35:11 CEST 2013


http://hg.python.org/cpython/rev/0e52b9f77dbf
changeset:   85615:0e52b9f77dbf
user:        Charles-François Natali <cf.natali at gmail.com>
date:        Sun Sep 08 11:30:53 2013 +0200
summary:
  Issue #18934: Use poll/select-based selectors for multiprocessing.Connection,
to avoid one extra FD per Connection.

files:
  Lib/multiprocessing/connection.py |  10 +++++++++-
  1 files changed, 9 insertions(+), 1 deletions(-)


diff --git a/Lib/multiprocessing/connection.py b/Lib/multiprocessing/connection.py
--- a/Lib/multiprocessing/connection.py
+++ b/Lib/multiprocessing/connection.py
@@ -878,13 +878,21 @@
 
     import selectors
 
+    # poll/select have the advantage of not requiring any extra file
+    # descriptor, contrarily to epoll/kqueue (also, they require a single
+    # syscall).
+    if hasattr(selectors, 'PollSelector'):
+        _WaitSelector = selectors.PollSelector
+    else:
+        _WaitSelector = selectors.SelectSelector
+
     def wait(object_list, timeout=None):
         '''
         Wait till an object in object_list is ready/readable.
 
         Returns list of those objects in object_list which are ready/readable.
         '''
-        with selectors.DefaultSelector() as selector:
+        with _WaitSelector() as selector:
             for obj in object_list:
                 selector.register(obj, selectors.EVENT_READ)
 

-- 
Repository URL: http://hg.python.org/cpython


More information about the Python-checkins mailing list