summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Lib/multiprocessing/pool.py3
-rw-r--r--Lib/test/test_multiprocessing.py17
-rw-r--r--Misc/ACKS1
-rw-r--r--Misc/NEWS3
4 files changed, 23 insertions, 1 deletions
diff --git a/Lib/multiprocessing/pool.py b/Lib/multiprocessing/pool.py
index ec57939..7f73b44 100644
--- a/Lib/multiprocessing/pool.py
+++ b/Lib/multiprocessing/pool.py
@@ -297,7 +297,8 @@ class Pool(object):
'''
Asynchronous version of `map()` method.
'''
- return self._map_async(func, iterable, mapstar, chunksize)
+ return self._map_async(func, iterable, mapstar, chunksize, callback,
+ error_callback)
def _map_async(self, func, iterable, mapper, chunksize=None, callback=None,
error_callback=None):
diff --git a/Lib/test/test_multiprocessing.py b/Lib/test/test_multiprocessing.py
index a8e42e4..9c7a202 100644
--- a/Lib/test/test_multiprocessing.py
+++ b/Lib/test/test_multiprocessing.py
@@ -1655,6 +1655,23 @@ class _TestPool(BaseTestCase):
self.assertEqual(self.pool.starmap_async(mul, tuples).get(),
list(itertools.starmap(mul, tuples)))
+ def test_map_async(self):
+ self.assertEqual(self.pool.map_async(sqr, list(range(10))).get(),
+ list(map(sqr, list(range(10)))))
+
+ def test_map_async_callbacks(self):
+ call_args = self.manager.list() if self.TYPE == 'manager' else []
+ self.pool.map_async(int, ['1'],
+ callback=call_args.append,
+ error_callback=call_args.append).wait()
+ self.assertEqual(1, len(call_args))
+ self.assertEqual([1], call_args[0])
+ self.pool.map_async(int, ['a'],
+ callback=call_args.append,
+ error_callback=call_args.append).wait()
+ self.assertEqual(2, len(call_args))
+ self.assertIsInstance(call_args[1], ValueError)
+
def test_map_chunksize(self):
try:
self.pool.map_async(sqr, [], chunksize=1).get(timeout=TIMEOUT1)
diff --git a/Misc/ACKS b/Misc/ACKS
index 110fa58..f6030a4 100644
--- a/Misc/ACKS
+++ b/Misc/ACKS
@@ -594,6 +594,7 @@ Jan Kaliszewski
Peter van Kampen
Rafe Kaplan
Jacob Kaplan-Moss
+Janne Karila
Per Øyvind Karlsen
Lou Kates
Hiroaki Kawai
diff --git a/Misc/NEWS b/Misc/NEWS
index db55df1..a82b6ca 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -62,6 +62,9 @@ Core and Builtins
Library
-------
+- Issue #16307: Fix multiprocessing.Pool.map_async not calling its callbacks.
+ Patch by Janne Karila.
+
- Issue #16305: Fix a segmentation fault occurring when interrupting
math.factorial.