diff options
author | Antoine Pitrou <solipsis@pitrou.net> | 2011-07-15 20:29:44 (GMT) |
---|---|---|
committer | Antoine Pitrou <solipsis@pitrou.net> | 2011-07-15 20:29:44 (GMT) |
commit | 707f228b1eb8d2829797524e0aa93922a238ff66 (patch) | |
tree | 5625a5797998b324fdd927613d7abdc470b59685 | |
parent | c081c0c6a0c917de72b7d7944c5316174717d56d (diff) | |
download | cpython-707f228b1eb8d2829797524e0aa93922a238ff66.zip cpython-707f228b1eb8d2829797524e0aa93922a238ff66.tar.gz cpython-707f228b1eb8d2829797524e0aa93922a238ff66.tar.bz2 |
Try harder to reap dangling threads in test.support.reap_threads().
-rw-r--r-- | Lib/test/support.py | 19 | ||||
-rw-r--r-- | 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): @@ -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' |