bpo-33056 FIX leaking fd in concurrent.futures.ProcessPoolExecutor (#6084)

diff --git a/Lib/concurrent/futures/process.py b/Lib/concurrent/futures/process.py
index aaa5151..63f22cf 100644
--- a/Lib/concurrent/futures/process.py
+++ b/Lib/concurrent/futures/process.py
@@ -78,11 +78,13 @@
 
 
 class _ThreadWakeup:
-    __slot__ = ["_state"]
-
     def __init__(self):
         self._reader, self._writer = mp.Pipe(duplex=False)
 
+    def close(self):
+        self._writer.close()
+        self._reader.close()
+
     def wakeup(self):
         self._writer.send_bytes(b"")
 
@@ -654,6 +656,11 @@
             self._call_queue = None
         self._result_queue = None
         self._processes = None
+
+        if self._queue_management_thread_wakeup:
+            self._queue_management_thread_wakeup.close()
+            self._queue_management_thread_wakeup = None
+
     shutdown.__doc__ = _base.Executor.shutdown.__doc__
 
 atexit.register(_python_exit)