diff options
author | Antoine Pitrou <solipsis@pitrou.net> | 2010-10-13 23:50:54 +0000 |
---|---|---|
committer | Antoine Pitrou <solipsis@pitrou.net> | 2010-10-13 23:50:54 +0000 |
commit | 35ce42f20d17db5ec2ebe535e6f966895e407eb0 (patch) | |
tree | a46c76b93df449af3fe4dd084859d46b71a963db /Lib/test/test_threaded_import.py | |
parent | 2693d087940f7a9d0820d11e1372b77b7133dfec (diff) | |
download | cpython-35ce42f20d17db5ec2ebe535e6f966895e407eb0.tar.gz cpython-35ce42f20d17db5ec2ebe535e6f966895e407eb0.zip |
Merged revisions 85444 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/py3k
........
r85444 | antoine.pitrou | 2010-10-14 01:48:39 +0200 (jeu., 14 oct. 2010) | 6 lines
Fix (hopefully) occasional failures in test_threaded_import.
`done` could be released multiple times because of concurrent
execution. We convert it to an Event, where calling set()
multiple times is not a problem.
........
Diffstat (limited to 'Lib/test/test_threaded_import.py')
-rw-r--r-- | Lib/test/test_threaded_import.py | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/Lib/test/test_threaded_import.py b/Lib/test/test_threaded_import.py index 8884fa8182f..7791935fdf1 100644 --- a/Lib/test/test_threaded_import.py +++ b/Lib/test/test_threaded_import.py @@ -33,7 +33,7 @@ def task(N, done, done_tasks, errors): done_tasks.append(thread.get_ident()) finished = len(done_tasks) == N if finished: - done.release() + done.set() # Create a circular import structure: A -> C -> B -> D -> A # NOTE: `time` is already loaded and therefore doesn't threaten to deadlock. @@ -99,8 +99,7 @@ class ThreadedImportTests(unittest.TestCase): # This triggers on, e.g., from test import autotest. raise unittest.SkipTest("can't run when import lock is held") - done = thread.allocate_lock() - done.acquire() + done = threading.Event() for N in (20, 50) * 3: if verbose: print("Trying", N, "threads ...", end=' ') @@ -112,13 +111,13 @@ class ThreadedImportTests(unittest.TestCase): pass errors = [] done_tasks = [] + done.clear() for i in range(N): thread.start_new_thread(task, (N, done, done_tasks, errors,)) - done.acquire() + done.wait(60) self.assertFalse(errors) if verbose: print("OK.") - done.release() def test_parallel_module_init(self): self.check_parallel_module_init() |