Hi,

Briefly, when using the multiprocessing module, when exceptions are thrown, they need to be pickleable in order to propagate, since that is how multiprocessing passes information around.

See http://stackoverflow.com/questions/8785899/hang-in-python-script-using-sqlalchemy-and-multiprocessing and Python bug http://bugs.python.org/issue1692335 for background.

I've reported bugs http://bugs.python.org/issue13751 and http://www.sqlalchemy.org/trac/ticket/2371 and http://psycopg.lighthouseapp.com/projects/62710-psycopg/tickets/90-psycopg-exceptions-cannot-be-pickled and http://bugs.python.org/issue13760 in this context. I've been reporting them as I came across them.

I can produce a complete example if necessary, but I think the problem is pretty obvious. Let me know whether you require followup action from me. Specifically, do you want me to report a bug?

See below the traceback I just ran into. Please CC me on all replies. Thanks.

                                                           Regards, Faheem

*******************************************************************

Process PoolWorker-1:
Traceback (most recent call last):
File "/usr/lib/python2.6/multiprocessing/process.py", line 232, in _bootstrap
Process PoolWorker-2:
Traceback (most recent call last):
  File "/usr/lib/python2.6/multiprocessing/process.py", line 232, in _bootstrap
    self.run()
  File "/usr/lib/python2.6/multiprocessing/process.py", line 88, in run
    self._target(*self._args, **self._kwargs)
  File "/usr/lib/python2.6/multiprocessing/pool.py", line 71, in worker
    self.run()
  File "/usr/lib/python2.6/multiprocessing/process.py", line 88, in run
    self._target(*self._args, **self._kwargs)
  File "/usr/lib/python2.6/multiprocessing/pool.py", line 71, in worker
    put((job, i, result))
  File "/usr/lib/python2.6/multiprocessing/queues.py", line 366, in put
    put((job, i, result))
  File "/usr/lib/python2.6/multiprocessing/queues.py", line 366, in put
    return send(obj)
PicklingError: Can't pickle <class 'Boost.Python.ArgumentError'>: import of module Boost.Python failed
    return send(obj)
PicklingError: Can't pickle <class 'Boost.Python.ArgumentError'>: import of module Boost.Python failed

_______________________________________________
Cplusplus-sig mailing list
Cplusplus-sig@python.org
http://mail.python.org/mailman/listinfo/cplusplus-sig

Reply via email to