从不同模块访问服务器的main()函数内修改的全局实例

时间:2017-11-29 20:55:45

标签: python global-variables

我有一个包含执行昂贵计算的类的服务器 在初始化期间。我想在启动服务器之前,在服务器模块的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;。你能否告诉我想要我做错了怎样才能解决这个问题并实现这个功能?

非常感谢

0 个答案:

没有答案