[Python-Dev] Fwd: Deadlock by a second import in a thread
Adam Olsen
rhamph at gmail.com
Sat Oct 20 01:22:33 CEST 2007
On 10/19/07, Facundo Batista <facundobatista at gmail.com> wrote:
> 2007/10/19, Adam Olsen <rhamph at gmail.com>:
>
> > The solution then is, if your python file will ever be imported, you
> > must write a main function and do all the work there instead. Do not
> > write it in the style of a script (with significant work in the global
> > scope.)
>
> I had this a as a good coding style, not so mandatory.
>
> I agree with you that the OP shouldn't be doing that, but note that
> the main problem arises here because it's completely unpredictable the
> import in strptime for an external user.
>
> Do you recommend to close the bug as "won't fix" saying something like...
>
> The deadlock happens because strptime has an import inside it, and
> recursive imports are not allowed in different threads.
>
> As a general rule and good coding style, don't run your code when the
> module is imported, but put it in a function like "main" in the second file,
> import it and call it from the first one. This will solve your problem.
>
> Note that this happens to you with strptime, but could happen with a lot
> of functions that do this internal import of something else. So,
> you'll never
> be sure.
>
> What do you think?
Whether this is a minor problem due to poor style or a major problem
due to a language defect is a matter of perspective. I'm working on
redesigning Python's threading support, expecting it to be used a
great deal more, which'd push it into the major problem category.
For now I'd leave it open.
--
Adam Olsen, aka Rhamphoryncus
More information about the Python-Dev
mailing list