我有一個初始化成本高的共享資源,因此我想跨系統訪問它(它基本上用於某些儀器,所以必須是輕量級的)。所以我創建了一個管理設置和訪問的模塊。它會對資源進行惰性初始化並將其存儲在模塊全局變量中。然後我在系統中使用這個模塊的功能來操作資源。
- 現在我想知道是否(或多久)我將不得不重新初始化資源?
- 我知道對象是垃圾收集在CPython上(或更好的是)零引用計數,但存儲在一個模塊計算爲引用,即使此時模塊沒有被執行?Python:模塊全局變量的生命週期
代碼示例:在這裏我們有模塊,其中_connect()很慢。我想在我的系統中使用report_safely(),並最終以儘可能少的方式調用_connect()。
__metrics = None
def _connect():
global __metrics
client = SomeSlowToSetUpClient()
__metrics = SomeMetrics(client)
client.connect()
def report_safely():
if not __metrics:
_connect()
__metrics.execute_lightweight_code()
要問的一個問題是,你確定在第一次連接之後的任何時候基本上都連接了這個東西**是一個好主意嗎? – voithos
嗯,這個東西只是向服務器發送UDP數據包,所以我沒有看到保持連接的問題? – Zakum