Message125996
| Author |
torsten |
| Recipients |
torsten |
| Date |
2011年01月11日.11:16:52 |
| SpamBayes Score |
3.8912975e-07 |
| Marked as misclassified |
No |
| Message-id |
<1294744619.25.0.366060169853.issue10886@psf.upfronthosting.co.za> |
| In-reply-to |
| Content |
When trying to send an object via a Queue that can't be pickled, one gets a quite unhelpful traceback:
Traceback (most recent call last):
File "/usr/lib/python2.6/multiprocessing/queues.py", line 242, in _feed
send(obj)
PicklingError: Can't pickle <type 'module'>: attribute lookup __builtin__.module failed
I have no idea where I am sending this. It would be helpful to get the call trace to the call to Queue.put.
My workaround was to create a Queue via this function MyQueue:
def MyQueue():
import cPickle
def myput(obj, *args, **kwargs):
cPickle.dumps(obj)
return orig_put(obj, *args, **kwargs)
q = Queue()
orig_put, q.put = q.put, myput
return q
That way I get the pickle exception in the caller to put and was able to find out the offending code. |
|
History
|
|---|
| Date |
User |
Action |
Args |
| 2011年01月11日 11:16:59 | torsten | set | recipients:
+ torsten |
| 2011年01月11日 11:16:59 | torsten | set | messageid: <1294744619.25.0.366060169853.issue10886@psf.upfronthosting.co.za> |
| 2011年01月11日 11:16:52 | torsten | link | issue10886 messages |
| 2011年01月11日 11:16:52 | torsten | create |
|