Threaded import hang in cPickle.dumps

Christian Heimes lists at cheimes.de
Wed Nov 11 17:16:25 EST 2009


Zac Burns wrote:
> Using python 2.6
> 
> cPickle.dumps has an import which is causing my application to hang.
> (figured out by overriding builtin.__import__ with a print and seeing
> that this is the last line of code being run. I'm running
> cPickle.dumps in a thread, which leads me to believe that the first
> restriction here is the cause:
> http://docs.python.org/library/threading.html#importing-in-threaded-code
> 
> What can I do about this?

You can do two things to stop the import lock from dead locking.

* Never ever start a thread as a side effect of an import. This means
you must not start a thread in the body of a module. As I explained in
numerous other messages a well designed application imports all its
modules first. After all modules have been imported the components are
initialized and the threads are started.

* Import all modules that are referred inside your pickled data before
you unpickle.

Christian




More information about the Python-list mailing list