Index: Lib/multiprocessing/pool.py
===================================================================
--- Lib/multiprocessing/pool.py (revision 82852)
+++ Lib/multiprocessing/pool.py (working copy)
@@ -283,8 +283,9 @@
break
try:
put(task)
- except IOError:
+ except Exception, e:
debug('could not put task on queue')
+ outqueue.put((task[0], task[1], (False, e)))
break
else:
if set_length:
Index: Lib/test/test_multiprocessing.py
===================================================================
--- Lib/test/test_multiprocessing.py (revision 82852)
+++ Lib/test/test_multiprocessing.py (working copy)
@@ -10,6 +10,7 @@
import sys
import os
import gc
+import cPickle
import signal
import array
import socket
@@ -1070,6 +1071,13 @@
join = TimingWrapper(self.pool.join)
join()
self.assertTrue(join.elapsed < 0.2)
+
+ def test_unpickleable(self):
+ p = multiprocessing.Pool(3)
+ f = lambda x: x
+ self.assertRaises(cPickle.PicklingError, p.apply, f, [1])
+ p.close()
+ p.join()
class _TestPoolWorkerLifetime(BaseTestCase):