mirror of
https://github.com/python/cpython.git
synced 2025-11-27 13:45:25 +00:00
Issue 6433: multiprocessing.pool.map hangs on empty list
This commit is contained in:
parent
2e1285baee
commit
7530e47948
4 changed files with 11 additions and 0 deletions
|
|
@ -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):
|
||||||
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
|
||||||
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
|
||||||
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
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue