# 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
def latin(s):
return s.encode('latin')
+
+def close_queue(queue):
+ if isinstance(queue, multiprocessing.queues.Queue):
+ queue.close()
+ queue.join_thread()
+
+
#
# Constants
#
self.assertEqual(q.qsize(), 1)
q.get()
self.assertEqual(q.qsize(), 0)
+ close_queue(q)
@classmethod
def _test_task_done(cls, q):
q.put(True)
# bpo-30595: use a timeout of 1 second for slow buildbots
self.assertTrue(q.get(timeout=1.0))
+ close_queue(q)
#
#
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()
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):
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):
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):
p.daemon = True
p.start()
self.assertEqual(wait(), True)
+ p.join()
#
# Tests for Barrier - adapted from tests in test/lock_tests.py
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):