Kaydet (Commit) 7530e479 authored tarafından Jesse Noller's avatar Jesse Noller

Issue 6433: multiprocessing.pool.map hangs on empty list

üst 2e1285ba
...@@ -207,6 +207,8 @@ class Pool(object): ...@@ -207,6 +207,8 @@ class Pool(object):
chunksize, extra = divmod(len(iterable), len(self._pool) * 4) chunksize, extra = divmod(len(iterable), len(self._pool) * 4)
if extra: if extra:
chunksize += 1 chunksize += 1
if len(iterable) == 0:
chunksize = 0
task_batches = Pool._get_tasks(func, iterable, chunksize) task_batches = Pool._get_tasks(func, iterable, chunksize)
result = MapResult(self._cache, chunksize, len(iterable), callback) result = MapResult(self._cache, chunksize, len(iterable), callback)
......
...@@ -990,6 +990,12 @@ class _TestPool(BaseTestCase): ...@@ -990,6 +990,12 @@ class _TestPool(BaseTestCase):
self.assertEqual(pmap(sqr, range(100), chunksize=20), self.assertEqual(pmap(sqr, range(100), chunksize=20),
map(sqr, range(100))) map(sqr, range(100)))
def test_map_chunksize(self):
try:
self.pool.map_async(sqr, [], chunksize=1).get(timeout=TIMEOUT1)
except multiprocessing.TimeoutError:
self.fail("pool.map_async with chunksize stalled on null list")
def test_async(self): def test_async(self):
res = self.pool.apply_async(sqr, (7, TIMEOUT1,)) res = self.pool.apply_async(sqr, (7, TIMEOUT1,))
get = TimingWrapper(res.get) get = TimingWrapper(res.get)
......
...@@ -199,6 +199,7 @@ Walter Dörwald ...@@ -199,6 +199,7 @@ Walter Dörwald
Hans Eckardt Hans Eckardt
Grant Edwards Grant Edwards
John Ehresman John Ehresman
Eric Eisner
Andrew Eland Andrew Eland
Lance Ellinghaus Lance Ellinghaus
David Ely David Ely
......
...@@ -352,6 +352,8 @@ Core and Builtins ...@@ -352,6 +352,8 @@ Core and Builtins
Library Library
------- -------
- Issue #6433: fixed issues with multiprocessing.pool.map hanging on empty list
- Issue #6314: logging: Extra checks on the "level" argument in more places. - Issue #6314: logging: Extra checks on the "level" argument in more places.
- Issue #2622: Fixed an ImportError when importing email.messsage from a - Issue #2622: Fixed an ImportError when importing email.messsage from a
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment