From 707f228b1eb8d2829797524e0aa93922a238ff66 Mon Sep 17 00:00:00 2001 From: Antoine Pitrou Date: Fri, 15 Jul 2011 22:29:44 +0200 Subject: Try harder to reap dangling threads in test.support.reap_threads(). --- Lib/test/support.py | 19 +++++++++++++------ Misc/NEWS | 2 ++ 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/Lib/test/support.py b/Lib/test/support.py index e2d7ae0..2827e8b 100644 --- a/Lib/test/support.py +++ b/Lib/test/support.py @@ -24,9 +24,15 @@ import sysconfig import logging.handlers try: - import _thread + import _thread, threading except ImportError: _thread = None + threading = None +try: + import multiprocessing.process +except ImportError: + multiprocessing = None + __all__ = [ "Error", "TestFailed", "ResourceDenied", "import_module", @@ -1275,19 +1281,20 @@ def modules_cleanup(oldmodules): def threading_setup(): if _thread: - return _thread._count(), + return _thread._count(), threading._dangling.copy() else: - return 1, + return 1, () -def threading_cleanup(nb_threads): +def threading_cleanup(*original_values): if not _thread: return _MAX_COUNT = 10 for count in range(_MAX_COUNT): - n = _thread._count() - if n == nb_threads: + values = _thread._count(), threading._dangling + if values == original_values: break time.sleep(0.1) + gc_collect() # XXX print a warning in case of failure? def reap_threads(func): diff --git a/Misc/NEWS b/Misc/NEWS index 00bce49..02b59dc 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -67,6 +67,8 @@ C-API Tests ----- +- Try harder to reap dangling threads in test.support.reap_threads(). + - Issue #12573: Add resource checks for dangling Thread and Process objects. - Issue #12549: Correct test_platform to not fail when OS X returns 'x86_64' -- cgit v0.12