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.
This commit is contained in:
parent
05c9d31eb6
commit
6cdce3ddef
@ -54,9 +54,9 @@ if "check_sibling" in __file__:
|
|||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
start_method = sys.argv[1]
|
start_method = sys.argv[1]
|
||||||
set_start_method(start_method)
|
set_start_method(start_method)
|
||||||
p = Pool(5)
|
|
||||||
results = []
|
results = []
|
||||||
p.map_async(f, [1, 2, 3], callback=results.extend)
|
with Pool(5) as pool:
|
||||||
|
pool.map_async(f, [1, 2, 3], callback=results.extend)
|
||||||
start_time = time.monotonic()
|
start_time = time.monotonic()
|
||||||
while not results:
|
while not results:
|
||||||
time.sleep(0.05)
|
time.sleep(0.05)
|
||||||
@ -64,8 +64,11 @@ if __name__ == '__main__':
|
|||||||
dt = time.monotonic() - start_time
|
dt = time.monotonic() - start_time
|
||||||
if dt > 60.0:
|
if dt > 60.0:
|
||||||
raise RuntimeError("Timed out waiting for results (%.1f sec)" % dt)
|
raise RuntimeError("Timed out waiting for results (%.1f sec)" % dt)
|
||||||
|
|
||||||
results.sort()
|
results.sort()
|
||||||
print(start_method, "->", results)
|
print(start_method, "->", results)
|
||||||
|
|
||||||
|
pool.join()
|
||||||
"""
|
"""
|
||||||
|
|
||||||
test_source_main_skipped_in_children = """\
|
test_source_main_skipped_in_children = """\
|
||||||
@ -84,18 +87,21 @@ from multiprocessing import Pool, set_start_method
|
|||||||
|
|
||||||
start_method = sys.argv[1]
|
start_method = sys.argv[1]
|
||||||
set_start_method(start_method)
|
set_start_method(start_method)
|
||||||
p = Pool(5)
|
|
||||||
results = []
|
results = []
|
||||||
p.map_async(int, [1, 4, 9], callback=results.extend)
|
with Pool(5) as pool:
|
||||||
start_time = time.monotonic()
|
pool.map_async(int, [1, 4, 9], callback=results.extend)
|
||||||
while not results:
|
start_time = time.monotonic()
|
||||||
|
while not results:
|
||||||
time.sleep(0.05)
|
time.sleep(0.05)
|
||||||
# up to 1 min to report the results
|
# up to 1 min to report the results
|
||||||
dt = time.monotonic() - start_time
|
dt = time.monotonic() - start_time
|
||||||
if dt > 60.0:
|
if dt > 60.0:
|
||||||
raise RuntimeError("Timed out waiting for results (%.1f sec)" % dt)
|
raise RuntimeError("Timed out waiting for results (%.1f sec)" % dt)
|
||||||
|
|
||||||
results.sort()
|
results.sort()
|
||||||
print(start_method, "->", results)
|
print(start_method, "->", results)
|
||||||
|
|
||||||
|
pool.join()
|
||||||
"""
|
"""
|
||||||
|
|
||||||
# These helpers were copied from test_cmd_line_script & tweaked a bit...
|
# These helpers were copied from test_cmd_line_script & tweaked a bit...
|
||||||
|
@ -0,0 +1,2 @@
|
|||||||
|
Fix test_multiprocessing_main_handling: use :class:`multiprocessing.Pool` with
|
||||||
|
a context manager and then explicitly join the pool.
|
Loading…
x
Reference in New Issue
Block a user