我有一个包含执行昂贵计算的类的服务器 在初始化期间。我想在启动服务器之前,在服务器模块的main()方法内初始化此类一次。然后,我希望导入服务器模块的其他模块能够检索此类的实例。
示例(睡眠模拟服务器正在运行)
import time
# I want to store the shared_instance of this global variable
shared_instance = None
class Shared:
def __init__(self):
# Expensive computation that I only want to run once
pass
def main():
global shared_instance
shared_instance = Shared() # Now instance_of_scorer is not None anymore
print(shared_instance)
print("Starting server...")
time.sleep(1000)
if __name__ == '__main__':
main()
当我运行此服务器时,它会打印:
<__main__.Shared object at 0x000001865A3C4320>
Starting server...
现在我有其他模块应该可以看到实例:
import server
print(server.shared_instance)
但是,shared_instance不是&#39;&lt; main 。共享对象位于0x000001865A3C4320&gt;&#39;正如所料。它是&#39;无&#39;。你能否告诉我想要我做错了怎样才能解决这个问题并实现这个功能?
非常感谢