importar dentro de um thread do Python

Eu tenho algumas funções que interativamente carregam módulos python usando__import__

Eu recentemente deparei com algum artigo sobre um "bloqueio de importação" em Python, isto é, um bloqueio especificamente para importações (não apenas o GIL). Mas o artigo era antigo, então talvez isso não seja mais verdade.

Isso me faz pensar sobre a prática de importação em um segmento.

Estáimport/__import__ discussão segura?Eles podem criar fechaduras mortas?Eles podem causar problemas de desempenho em um aplicativo encadeado?

EDIT 12 de setembro de 2012

Obrigado pela grande resposta Soravux. Portanto, a importação é thread-safe, e não me preocupo com deadlocks, já que as funções que usam__import__ no meu código não ligue uns aos outros.

Você sabe se o bloqueio é adquirido mesmo que o módulo já tenha sido importado? Se for esse o caso, eu provavelmente deveria procurar em sys.modules para verificar se o módulo já foi importado antes de fazer uma chamada para__import__.

Claro que isso não deve fazer muita diferença no CPython, já que existe o GIL. No entanto, isso poderia fazer muita diferença em outras implementações como Jython ou Python sem empilhamento.

EDIT 19 de setembro de 2012

Sobre o Jython, aqui está o que dizem no documento:

http://www.jython.org/jythonbook/en/1.0/Concurrency.html#module-import-lock

O Python, no entanto, define um bloqueio de importação de módulo, que é implementado pelo Jython. Esse bloqueio é adquirido sempre que uma importação de qualquer nome é feita. Isto é verdade se a importação passa pela declaração de importação, o equivalente__import__ embutido, ou código relacionado. É importante observar que, mesmo que o módulo correspondente já tenha sido importado, o bloqueio de importação do módulo ainda será adquirido, ainda que brevemente.

Então, parece que faria sentido verificar em sys.modules antes de fazer uma importação, para evitar a aquisição do bloqueio. O que você acha?

questionAnswers(1)

yourAnswerToTheQuestion