[PEAK] Virtual Pythons

Phillip J. Eby pje at telecommunity.com
Wed Jul 28 01:56:31 EDT 2004


At 01:48 AM 7/28/04 -0400, Bob Ippolito wrote:
>On Jul 28, 2004, at 12:32 AM, Phillip J. Eby wrote:
>
>>One of the mildly annoying things about trying to develop any sort of 
>>really sophisticated extensible system in Python is that modules are 
>>global.  That is, you can only have one instance of a given module or package.
>..
>>I do see a few complications:
>..
>>  * There will probably need to be some sort of re-entrant locking to 
>> prevent multiple threads from trying to perform an import in the same 
>> module space at the same time, and it will need to be in addition to the 
>> pre-existing __import__ lock.
>
>Doesn't Python already have that?

Hence the phrase, "in addition to the pre-existing __import__ lock".  :)

Look at it this way: the existing import lock is *inside* the '__import__' 
function.  However, the module space mechanism wraps the existing 
'__import__' function, so when it checks its local version of the 'sys' 
module, there's no protection against a race condition there.  Thus, each 
module space needs its own re-entrant lock to protect its unique 
'sys.modules' against race conditions.




More information about the PEAK mailing list