From 254af2644a90bcabbe2612950dd2a6ef408337be Mon Sep 17 00:00:00 2001 From: Hynek Schlawack Date: Sat, 27 Oct 2012 12:53:02 +0200 Subject: #16307: Fix multiprocessing.Pool.map_async not calling its callbacks Patch by Janne Karila. --- Lib/multiprocessing/pool.py | 3 ++- Lib/test/test_multiprocessing.py | 17 +++++++++++++++++ Misc/ACKS | 1 + Misc/NEWS | 3 +++ 4 files changed, 23 insertions(+), 1 deletion(-) 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 e313dd6..b2a964c 100644 --- a/Lib/test/test_multiprocessing.py +++ b/Lib/test/test_multiprocessing.py @@ -1642,6 +1642,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 3ee3864..ac44ae8 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 e0a54cb..9766633 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -49,6 +49,9 @@ Core and Builtins Library ------- +- Issue #16307: Fix multiprocessing.Pool.map_async not calling its callbacks. + Patch by Janne Karila. + - Issue #16250: Fix URLError invocation with proper args. - Issue #16116: Fix include and library paths to be correct when building C -- cgit v0.12