import keyword behaviour - performance impact if used multiple times?

Nick Coghlan ncoghlan at
Fri Jan 14 22:44:47 EST 2005

neophyte wrote:
> Nick Coghlan wrote:
>> > 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).
> Given that this is exactly what I want, how can you do it?

If you just want to reload an existing module, use the builtin "reload" function.

Getting multiple versions of a module into sys.modules at the same time isn't 
something I've ever actually wanted to do, but the following will do it:

Py> import sys
Py> sys.modules["sys1"] = sys
Py> del sys.modules["sys"]
Py> import sys
Py> import sys1
Py> sys is sys1

1. Doing this at all is probably a bad idea (since you may end up duplicating 
objects that are meant to be unique within the process, and any C-extension code 
will still be shared between the multiple versions of the module)
2. Doing it to 'sys' like I just did is an even worse idea, since you 
*definitely* end up doing 1 :)


Nick Coghlan   |   ncoghlan at   |   Brisbane, Australia

More information about the Python-list mailing list