New submission from Torsten Landschoff <t.landsch...@gmx.net>:

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.

----------
components: Library (Lib)
messages: 125996
nosy: torsten
priority: normal
severity: normal
status: open
title: Unhelpful backtrace for multiprocessing.Queue
type: feature request
versions: Python 2.6

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue10886>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to