Message150981
This is not specific to multiprocessing. It is really an issue with the pickling of exceptions:
>>> import cPickle
>>> class BadExc(Exception):
... def __init__(self, a):
... '''Non-optional param in the constructor.'''
... self.a = a
...
>>> a = cPickle.dumps(BadExc(1))
>>> cPickle.loads(a)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: ('__init__() takes exactly 2 arguments (1 given)', <class '__main__.BadExc'>, ())
I think that when you create a new exception class with an __init__() method, you need to make sure that self.args is set properly by calling the __init__() method of the parent class using the same arguments. So you can instead do
class BadExc(Exception):
def __init__(self, a):
'''Non-optional param in the constructor.'''
Exception.__init__(self, a)
self.a = a |
|
Date |
User |
Action |
Args |
2012-01-09 21:27:58 | sbt | set | recipients:
+ sbt, fmitha |
2012-01-09 21:27:58 | sbt | set | messageid: <1326144478.74.0.962463624744.issue13751@psf.upfronthosting.co.za> |
2012-01-09 21:27:58 | sbt | link | issue13751 messages |
2012-01-09 21:27:58 | sbt | create | |
|