import keyword behaviour - performance impact if used multiple times?
Nick Coghlan
ncoghlan at email.com
Sat Nov 27 08:10:49 EST 2004
Andrew James wrote:
> Hi,
> I've been looking around on Google for the answer to this question, and
> it's beginning to really bug me. I'm making some design decisions for
> some code I'm writing, and I'm wondering whether (Good Design Decisions
> apart), there's a performance impact in importing the same module in two
> different files. For example, with the following:
>
> fileA.py
> -----------
> import psycopg
> class A:
> ....
>
> fileB.py
> import psycopg
> class B:
> a = A()
> ....
>
> If I run fileB, will this import the psycopg twice, or once only?
I'm guessing fileB.py should read:
import psycopg
import A
...etc
Anyway, when Python imports modules it stores a reference to them in
sys.modules. Any attempts to import the module again are satisfied using the
cached version already stored in sys.modules.
So, in your example, psycopg is imported once only, and both fileA and fileB
would be referring to the same version of psycopg.
> Is
> this something to do with system modules being singletons?
They aren't singletons in the GoF design pattern sense. However, Python's import
machinery operates in such a way that it takes effort to get multiple version of
the same module into memory at the same time (it *can* be done, but you have to
work at it).
Cheers,
Nick.
More information about the Python-list
mailing list