This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

Author pitrou
Recipients aeros, pitrou, tomMoral, vstinner
Date 2020-04-28.08:08:36
SpamBayes Score -1.0
Marked as misclassified Yes
Message-id <1588061316.74.0.479206287444.issue39995@roundup.psfhosted.org>
In-reply-to
Content
How about the following (untested):

diff --git a/Lib/concurrent/futures/process.py b/Lib/concurrent/futures/process.py
index 8e9b69a8f0..c0c2eb3032 100644
--- a/Lib/concurrent/futures/process.py
+++ b/Lib/concurrent/futures/process.py
@@ -66,23 +66,29 @@ _global_shutdown = False
 
 class _ThreadWakeup:
     def __init__(self):
-        self._closed = False
         self._reader, self._writer = mp.Pipe(duplex=False)
 
     def close(self):
-        if not self._closed:
-            self._closed = True
-            self._writer.close()
-            self._reader.close()
+        r, w = self._reader, self._writer
+        self._reader = self._writer = None
+        if r is not None:
+            r.close()
+            w.close()
 
     def wakeup(self):
-        if not self._closed:
+        try:
             self._writer.send_bytes(b"")
+        except AttributeError:
+            # Closed
+            pass
 
     def clear(self):
-        if not self._closed:
+        try:
             while self._reader.poll():
                 self._reader.recv_bytes()
+        except AttributeError:
+            # Closed
+            pass
 
 
 def _python_exit():
History
Date User Action Args
2020-04-28 08:08:36pitrousetrecipients: + pitrou, vstinner, tomMoral, aeros
2020-04-28 08:08:36pitrousetmessageid: <1588061316.74.0.479206287444.issue39995@roundup.psfhosted.org>
2020-04-28 08:08:36pitroulinkissue39995 messages
2020-04-28 08:08:36pitroucreate