double import protection - how to ?
Peter Otten
__peter__ at web.de
Sat Nov 29 11:02:25 EST 2008
Helmut Jarausch wrote:
> Peter Otten wrote:
>> Helmut Jarausch wrote:
>>
>>> I have a module which gets imported at several different places
>>> not all of which are under my control.
>>>
>>> How can I achieve that all/some statements within that module
>>> get executed only at the very first import?
>>
>> What you describe is Python's default behaviour. A module is executed
>> once and then cached in sys.modules. The second import is then just a
>> cache lookup.
>>
>> This may only fail if a module is imported under different names,
>> typically
>> when you have directory in sys.path that is part of a package, or when
>> you import the main script.
>>
>> Peter
>
> Thanks Steven, thanks Peter.
>
> Then it's a problem with a problem with a webserver written in Python
> (Karrigell-3.0) and probably related to multi-threading (the statements in
> my module get definitely executed more than once).
Maybe you have the reload_modules* option switched on? That would defeat
Python's caching in order to ease development.
(*) see http://karrigell.sourceforge.net/en/configuration.htm
Peter
More information about the Python-list
mailing list