diff options
author | Richard Oudkerk <shibturn@gmail.com> | 2014-03-23 12:30:54 (GMT) |
---|---|---|
committer | Richard Oudkerk <shibturn@gmail.com> | 2014-03-23 12:30:54 (GMT) |
commit | 80a5be1d84689a680900ff4900acb2a39ec6d2a8 (patch) | |
tree | 7c11e5d9148ac8399a9a651e9aaf61ca2f5df576 /Lib/multiprocessing/pool.py | |
parent | a40675a1a232479bbc2cb9437db265416eeb5b2d (diff) | |
download | cpython-80a5be1d84689a680900ff4900acb2a39ec6d2a8.zip cpython-80a5be1d84689a680900ff4900acb2a39ec6d2a8.tar.gz cpython-80a5be1d84689a680900ff4900acb2a39ec6d2a8.tar.bz2 |
Issue #20980: Stop wrapping exception when using ThreadPool.
Diffstat (limited to 'Lib/multiprocessing/pool.py')
-rw-r--r-- | Lib/multiprocessing/pool.py | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/Lib/multiprocessing/pool.py b/Lib/multiprocessing/pool.py index 74d0875..8832a5c 100644 --- a/Lib/multiprocessing/pool.py +++ b/Lib/multiprocessing/pool.py @@ -90,7 +90,8 @@ class MaybeEncodingError(Exception): return "<MaybeEncodingError: %s>" % str(self) -def worker(inqueue, outqueue, initializer=None, initargs=(), maxtasks=None): +def worker(inqueue, outqueue, initializer=None, initargs=(), maxtasks=None, + wrap_exception=False): assert maxtasks is None or (type(maxtasks) == int and maxtasks > 0) put = outqueue.put get = inqueue.get @@ -117,7 +118,8 @@ def worker(inqueue, outqueue, initializer=None, initargs=(), maxtasks=None): try: result = (True, func(*args, **kwds)) except Exception as e: - e = ExceptionWithTraceback(e, e.__traceback__) + if wrap_exception: + e = ExceptionWithTraceback(e, e.__traceback__) result = (False, e) try: put((job, i, result)) @@ -137,6 +139,8 @@ class Pool(object): ''' Class which supports an async version of applying functions to arguments. ''' + _wrap_exception = True + def Process(self, *args, **kwds): return self._ctx.Process(*args, **kwds) @@ -220,7 +224,8 @@ class Pool(object): w = self.Process(target=worker, args=(self._inqueue, self._outqueue, self._initializer, - self._initargs, self._maxtasksperchild) + self._initargs, self._maxtasksperchild, + self._wrap_exception) ) self._pool.append(w) w.name = w.name.replace('Process', 'PoolWorker') @@ -736,6 +741,7 @@ class IMapUnorderedIterator(IMapIterator): # class ThreadPool(Pool): + _wrap_exception = False @staticmethod def Process(*args, **kwds): |