How do I do thread safety inside an External method. I want to access a global singleton as def __ZGA(): if not hasattr(sys.modules['__main__'],'__ZGA'): #unsafe here... Z=ZGA_calculator() # initialise things to do with Z sys.modules['__main__'].__dict__['__ZGA']=Z return sys.modules['__main__'].__dict__['__ZGA'] the problem is controlling access to sys.modules['__main__'].__dict__['__ZGA']. I can't have a global lock inside my external method as I get a different environment with each call (which is why I need the singleton in the first place). It would be sufficient for my purposes if I could guarantee to get certain code run just once at startup time. Do I have to make a product or is there some easier way to do this. -- Robin Becker