]> granicus.if.org Git - python/commitdiff
raise a ValueError instead of an AssertionError when pool is an invalid state
authorBenjamin Peterson <benjamin@python.org>
Tue, 25 Sep 2012 16:45:42 +0000 (12:45 -0400)
committerBenjamin Peterson <benjamin@python.org>
Tue, 25 Sep 2012 16:45:42 +0000 (12:45 -0400)
Lib/multiprocessing/pool.py
Lib/test/test_multiprocessing.py

index 9e07e32de6d8ce0241dd03003a32aabd41732564..ec57939c45f2cc445972b63420af273ab36b73ab 100644 (file)
@@ -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)
 
index b70783a19193d21c27165aca297ff0668975ae31..e313dd60622bfa08744e2dc023c1376f131ef18c 100644 (file)
@@ -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")