diff options
-rw-r--r-- | Lib/test/_test_multiprocessing.py | 24 |
1 files changed, 22 insertions, 2 deletions
diff --git a/Lib/test/_test_multiprocessing.py b/Lib/test/_test_multiprocessing.py index 88e2eb3..126725f 100644 --- a/Lib/test/_test_multiprocessing.py +++ b/Lib/test/_test_multiprocessing.py @@ -32,11 +32,12 @@ test.support.import_module('multiprocessing.synchronize') # without thread support. import threading -import multiprocessing.dummy import multiprocessing.connection -import multiprocessing.managers +import multiprocessing.dummy import multiprocessing.heap +import multiprocessing.managers import multiprocessing.pool +import multiprocessing.queues from multiprocessing import util @@ -64,6 +65,13 @@ except ImportError: def latin(s): return s.encode('latin') + +def close_queue(queue): + if isinstance(queue, multiprocessing.queues.Queue): + queue.close() + queue.join_thread() + + # # Constants # @@ -825,6 +833,7 @@ class _TestQueue(BaseTestCase): self.assertEqual(q.qsize(), 1) q.get() self.assertEqual(q.qsize(), 0) + close_queue(q) @classmethod def _test_task_done(cls, q): @@ -897,6 +906,7 @@ class _TestQueue(BaseTestCase): q.put(True) # bpo-30595: use a timeout of 1 second for slow buildbots self.assertTrue(q.get(timeout=1.0)) + close_queue(q) # # @@ -1020,10 +1030,12 @@ class _TestCondition(BaseTestCase): p = self.Process(target=self.f, args=(cond, sleeping, woken)) p.daemon = True p.start() + self.addCleanup(p.join) p = threading.Thread(target=self.f, args=(cond, sleeping, woken)) p.daemon = True p.start() + self.addCleanup(p.join) # wait for both children to start sleeping sleeping.acquire() @@ -1066,11 +1078,13 @@ class _TestCondition(BaseTestCase): args=(cond, sleeping, woken, TIMEOUT1)) p.daemon = True p.start() + self.addCleanup(p.join) t = threading.Thread(target=self.f, args=(cond, sleeping, woken, TIMEOUT1)) t.daemon = True t.start() + self.addCleanup(t.join) # wait for them all to sleep for i in range(6): @@ -1089,10 +1103,12 @@ class _TestCondition(BaseTestCase): p = self.Process(target=self.f, args=(cond, sleeping, woken)) p.daemon = True p.start() + self.addCleanup(p.join) t = threading.Thread(target=self.f, args=(cond, sleeping, woken)) t.daemon = True t.start() + self.addCleanup(t.join) # wait for them to all sleep for i in range(6): @@ -1123,10 +1139,12 @@ class _TestCondition(BaseTestCase): p = self.Process(target=self.f, args=(cond, sleeping, woken)) p.daemon = True p.start() + self.addCleanup(p.join) t = threading.Thread(target=self.f, args=(cond, sleeping, woken)) t.daemon = True t.start() + self.addCleanup(t.join) # wait for them to all sleep for i in range(6): @@ -1309,6 +1327,7 @@ class _TestEvent(BaseTestCase): p.daemon = True p.start() self.assertEqual(wait(), True) + p.join() # # Tests for Barrier - adapted from tests in test/lock_tests.py @@ -1654,6 +1673,7 @@ class _TestBarrier(BaseTestCase): p = self.Process(target=self._test_thousand_f, args=(self.barrier, passes, child_conn, lock)) p.start() + self.addCleanup(p.join) for i in range(passes): for j in range(self.N): |