summaryrefslogtreecommitdiffstats
path: root/Lib/test/test_concurrent_futures.py
diff options
context:
space:
mode:
Diffstat (limited to 'Lib/test/test_concurrent_futures.py')
-rw-r--r--Lib/test/test_concurrent_futures.py14
1 files changed, 11 insertions, 3 deletions
diff --git a/Lib/test/test_concurrent_futures.py b/Lib/test/test_concurrent_futures.py
index 7b10f81..c973516 100644
--- a/Lib/test/test_concurrent_futures.py
+++ b/Lib/test/test_concurrent_futures.py
@@ -87,8 +87,7 @@ class MyObject(object):
class EventfulGCObj():
- def __init__(self, ctx):
- mgr = get_context(ctx).Manager()
+ def __init__(self, mgr):
self.event = mgr.Event()
def __del__(self):
@@ -847,12 +846,21 @@ class ProcessPoolExecutorTest(ExecutorTest):
def test_ressources_gced_in_workers(self):
# Ensure that argument for a job are correctly gc-ed after the job
# is finished
- obj = EventfulGCObj(self.ctx)
+ mgr = get_context(self.ctx).Manager()
+ obj = EventfulGCObj(mgr)
future = self.executor.submit(id, obj)
future.result()
self.assertTrue(obj.event.wait(timeout=1))
+ # explicitly destroy the object to ensure that EventfulGCObj.__del__()
+ # is called while manager is still running.
+ obj = None
+ support.gc_collect()
+
+ mgr.shutdown()
+ mgr.join()
+
create_executor_tests(ProcessPoolExecutorTest,
executor_mixins=(ProcessPoolForkMixin,