[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