summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBenjamin Peterson <benjamin@python.org>2012-09-25 16:45:42 (GMT)
committerBenjamin Peterson <benjamin@python.org>2012-09-25 16:45:42 (GMT)
commit3095f4724ec7ca735dfae5c9bd3925c27688a115 (patch)
tree668e6da00578ed86004a27bd300833e3a3cb8730
parent3331a20464d7018e8e0b0f7710690dd1575be3b6 (diff)
downloadcpython-3095f4724ec7ca735dfae5c9bd3925c27688a115.zip
cpython-3095f4724ec7ca735dfae5c9bd3925c27688a115.tar.gz
cpython-3095f4724ec7ca735dfae5c9bd3925c27688a115.tar.bz2
raise a ValueError instead of an AssertionError when pool is an invalid state
-rw-r--r--Lib/multiprocessing/pool.py15
-rw-r--r--Lib/test/test_multiprocessing.py3
2 files changed, 10 insertions, 8 deletions
diff --git a/Lib/multiprocessing/pool.py b/Lib/multiprocessing/pool.py
index 9e07e32..ec57939 100644
--- a/Lib/multiprocessing/pool.py
+++ b/Lib/multiprocessing/pool.py
@@ -225,7 +225,6 @@ class Pool(object):
Apply `func` to each element in `iterable`, collecting the results
in a list that is returned.
'''
- assert self._state == RUN
return self._map_async(func, iterable, mapstar, chunksize).get()
def starmap(self, func, iterable, chunksize=None):
@@ -234,7 +233,6 @@ class Pool(object):
be iterables as well and will be unpacked as arguments. Hence
`func` and (a, b) becomes func(a, b).
'''
- assert self._state == RUN
return self._map_async(func, iterable, starmapstar, chunksize).get()
def starmap_async(self, func, iterable, chunksize=None, callback=None,
@@ -242,7 +240,6 @@ class Pool(object):
'''
Asynchronous version of `starmap()` method.
'''
- assert self._state == RUN
return self._map_async(func, iterable, starmapstar, chunksize,
callback, error_callback)
@@ -250,7 +247,8 @@ class Pool(object):
'''
Equivalent of `map()` -- can be MUCH slower than `Pool.map()`.
'''
- assert self._state == RUN
+ if self._state != RUN:
+ raise ValueError("Pool not running")
if chunksize == 1:
result = IMapIterator(self._cache)
self._taskqueue.put((((result._job, i, func, (x,), {})
@@ -268,7 +266,8 @@ class Pool(object):
'''
Like `imap()` method but ordering of results is arbitrary.
'''
- assert self._state == RUN
+ if self._state != RUN:
+ raise ValueError("Pool not running")
if chunksize == 1:
result = IMapUnorderedIterator(self._cache)
self._taskqueue.put((((result._job, i, func, (x,), {})
@@ -287,7 +286,8 @@ class Pool(object):
'''
Asynchronous version of `apply()` method.
'''
- assert self._state == RUN
+ if self._state != RUN:
+ raise ValueError("Pool not running")
result = ApplyResult(self._cache, callback, error_callback)
self._taskqueue.put(([(result._job, None, func, args, kwds)], None))
return result
@@ -297,7 +297,6 @@ class Pool(object):
'''
Asynchronous version of `map()` method.
'''
- assert self._state == RUN
return self._map_async(func, iterable, mapstar, chunksize)
def _map_async(self, func, iterable, mapper, chunksize=None, callback=None,
@@ -305,6 +304,8 @@ class Pool(object):
'''
Helper function to implement map, starmap and their async counterparts.
'''
+ if self._state != RUN:
+ raise ValueError("Pool not running")
if not hasattr(iterable, '__len__'):
iterable = list(iterable)
diff --git a/Lib/test/test_multiprocessing.py b/Lib/test/test_multiprocessing.py
index b70783a..e313dd6 100644
--- a/Lib/test/test_multiprocessing.py
+++ b/Lib/test/test_multiprocessing.py
@@ -1727,7 +1727,8 @@ class _TestPool(BaseTestCase):
with multiprocessing.Pool(2) as p:
r = p.map_async(sqr, L)
self.assertEqual(r.get(), expected)
- self.assertRaises(AssertionError, p.map_async, sqr, L)
+ print(p._state)
+ self.assertRaises(ValueError, p.map_async, sqr, L)
def raising():
raise KeyError("key")