Antoine Pitrou <solip...@pitrou.net> added the comment:
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(): ---------- _______________________________________ Python tracker <rep...@bugs.python.org> <https://bugs.python.org/issue39995> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com