[Python-checkins] bpo-35424: Fix test_multiprocessing_main_handling (GH-11223)
Victor Stinner
webhook-mailer at python.org
Tue Dec 18 17:54:36 EST 2018
https://github.com/python/cpython/commit/6cdce3ddef805e11d75142f3e20e23c3fe21fdf4
commit: 6cdce3ddef805e11d75142f3e20e23c3fe21fdf4
branch: master
author: Victor Stinner <vstinner at redhat.com>
committer: GitHub <noreply at github.com>
date: 2018-12-18T23:54:33+01:00
summary:
bpo-35424: Fix test_multiprocessing_main_handling (GH-11223)
Fix test_multiprocessing_main_handling: use multiprocessing.Pool with
a context manager and then explicitly join the pool.
files:
A Misc/NEWS.d/next/Tests/2018-12-18-22-36-53.bpo-35424.1Pz4IS.rst
M Lib/test/test_multiprocessing_main_handling.py
diff --git a/Lib/test/test_multiprocessing_main_handling.py b/Lib/test/test_multiprocessing_main_handling.py
index 9fd5c9fcd91f..b6abfcc7e283 100644
--- a/Lib/test/test_multiprocessing_main_handling.py
+++ b/Lib/test/test_multiprocessing_main_handling.py
@@ -54,18 +54,21 @@ def f(x):
if __name__ == '__main__':
start_method = sys.argv[1]
set_start_method(start_method)
- p = Pool(5)
results = []
- p.map_async(f, [1, 2, 3], callback=results.extend)
- start_time = time.monotonic()
- while not results:
- time.sleep(0.05)
- # up to 1 min to report the results
- dt = time.monotonic() - start_time
- if dt > 60.0:
- raise RuntimeError("Timed out waiting for results (%.1f sec)" % dt)
+ with Pool(5) as pool:
+ pool.map_async(f, [1, 2, 3], callback=results.extend)
+ start_time = time.monotonic()
+ while not results:
+ time.sleep(0.05)
+ # up to 1 min to report the results
+ dt = time.monotonic() - start_time
+ if dt > 60.0:
+ raise RuntimeError("Timed out waiting for results (%.1f sec)" % dt)
+
results.sort()
print(start_method, "->", results)
+
+ pool.join()
"""
test_source_main_skipped_in_children = """\
@@ -84,18 +87,21 @@ def f(x):
start_method = sys.argv[1]
set_start_method(start_method)
-p = Pool(5)
results = []
-p.map_async(int, [1, 4, 9], callback=results.extend)
-start_time = time.monotonic()
-while not results:
- time.sleep(0.05)
- # up to 1 min to report the results
- dt = time.monotonic() - start_time
- if dt > 60.0:
- raise RuntimeError("Timed out waiting for results (%.1f sec)" % dt)
+with Pool(5) as pool:
+ pool.map_async(int, [1, 4, 9], callback=results.extend)
+ start_time = time.monotonic()
+ while not results:
+ time.sleep(0.05)
+ # up to 1 min to report the results
+ dt = time.monotonic() - start_time
+ if dt > 60.0:
+ raise RuntimeError("Timed out waiting for results (%.1f sec)" % dt)
+
results.sort()
print(start_method, "->", results)
+
+pool.join()
"""
# These helpers were copied from test_cmd_line_script & tweaked a bit...
diff --git a/Misc/NEWS.d/next/Tests/2018-12-18-22-36-53.bpo-35424.1Pz4IS.rst b/Misc/NEWS.d/next/Tests/2018-12-18-22-36-53.bpo-35424.1Pz4IS.rst
new file mode 100644
index 000000000000..461f636981b1
--- /dev/null
+++ b/Misc/NEWS.d/next/Tests/2018-12-18-22-36-53.bpo-35424.1Pz4IS.rst
@@ -0,0 +1,2 @@
+Fix test_multiprocessing_main_handling: use :class:`multiprocessing.Pool` with
+a context manager and then explicitly join the pool.
More information about the Python-checkins
mailing list