sbt <[email protected]> added the comment:
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
----------
nosy: +sbt
_______________________________________
Python tracker <[email protected]>
<http://bugs.python.org/issue13751>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com