summaryrefslogtreecommitdiffstats
path: root/Lib/multiprocessing/resource_tracker.py
diff options
context:
space:
mode:
authorVictor Stinner <vstinner@python.org>2019-12-17 17:37:26 (GMT)
committerGitHub <noreply@github.com>2019-12-17 17:37:26 (GMT)
commit9707e8e22d80ca97bf7a9812816701cecde6d226 (patch)
tree088de81a48039faca3709360325055105b9d9c56 /Lib/multiprocessing/resource_tracker.py
parent630c8df5cf126594f8c1c4579c1888ca80a29d59 (diff)
downloadcpython-9707e8e22d80ca97bf7a9812816701cecde6d226.zip
cpython-9707e8e22d80ca97bf7a9812816701cecde6d226.tar.gz
cpython-9707e8e22d80ca97bf7a9812816701cecde6d226.tar.bz2
bpo-38546: multiprocessing tests stop the resource tracker (GH-17641)
Multiprocessing and concurrent.futures tests now stop the resource tracker process when tests complete. Add ResourceTracker._stop() method to multiprocessing.resource_tracker. Add _cleanup_tests() helper function to multiprocessing.util: share code between multiprocessing and concurrent.futures tests.
Diffstat (limited to 'Lib/multiprocessing/resource_tracker.py')
-rw-r--r--Lib/multiprocessing/resource_tracker.py13
1 files changed, 13 insertions, 0 deletions
diff --git a/Lib/multiprocessing/resource_tracker.py b/Lib/multiprocessing/resource_tracker.py
index 61a6dd6..c9bfa9b 100644
--- a/Lib/multiprocessing/resource_tracker.py
+++ b/Lib/multiprocessing/resource_tracker.py
@@ -50,6 +50,19 @@ class ResourceTracker(object):
self._fd = None
self._pid = None
+ def _stop(self):
+ with self._lock:
+ if self._fd is None:
+ # not running
+ return
+
+ # closing the "alive" file descriptor stops main()
+ os.close(self._fd)
+ self._fd = None
+
+ os.waitpid(self._pid, 0)
+ self._pid = None
+
def getfd(self):
self.ensure_running()
return self._fd