New submission from Armin Rigo:

multiprocessing.queues.SimpleQueue should have a close() method.  This is 
needed to explicitly release the two file descriptors of the Pipe used 
internally.  Without it, the file descriptors leak if a reference to the 
SimpleQueue object happens to stay around for longer than expected (e.g. in a 
reference cycle, or with PyPy).

I think the following would do:

diff -r 0b72fd1a7641 lib-python/2.7/multiprocessing/queues.py
--- a/lib-python/2.7/multiprocessing/queues.py  Sun Jul 16 13:41:28 2017 +0200
+++ b/lib-python/2.7/multiprocessing/queues.py  Wed Jul 19 10:45:03 2017 +0200
@@ -358,6 +358,11 @@
             self._wlock = Lock()
         self._make_methods()

+    def close(self):
+        # PyPy extension: CPython doesn't have this method!
+        self._reader.close()
+        self._writer.close()
+
     def empty(self):
         return not self._reader.poll()

----------
messages: 298645
nosy: arigo
priority: normal
severity: normal
status: open
title: multiprocessing.queues.SimpleQueue leaks 2 fds
versions: Python 2.7, Python 3.3, Python 3.4, Python 3.5, Python 3.6, Python 3.7

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue30966>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to