2010-05-26 50 views

回答

4

這聽起來像一個好去處pub/sub technique,那就是你有對象監視更改。這在像GUI這樣的事情中很有用,當你需要更新某個小部件時,只要它顯示的值發生變化。

東西很簡單:

>>> class Widget(object): 
    def __init__(self, name, val): 
     self.name = name 
     self.val = val 
    def update(self, val): 
     self.val = val 
     print self.name, "changed to", self.val 


>>> def update(updateables, val): 
    for u in updateables: 
     u(val) 


>>> w1, w2 = Widget("Alpha", 5), Widget("Beta", 6) 
>>> updateables = [w1.update, w2.update] 
>>> update(updateables, 17) 
Alpha changed to 17 
Beta changed to 17 

的想法是,價值的「觀察家」註冊一個回調,它被調用時該值的變化。

+1

我用的pub/sub技術併爲我最終使用Redis pub/sub(http://redis.io/topics/pubsub)中介。 – Vishal 2011-08-23 23:35:17

0

我認爲這很好。你實際上並沒有使用全局變量(比如使用'global'關鍵字)。您正在導入模塊,然後從其他模塊訪問該模塊。對我來說似乎是一個很好的解決方案。

你移動了多少數據?因爲您可以使用數據存儲,比如SQLite,並且每個模塊都可以根據需要讀取和寫入數據存儲。但每分鐘更新一次,您可能不需要堅持或關係,使您的現有解決方案變得更簡單。

[編輯晚得多]

試想想起來了,在內存中的SQLite數據庫可能會打你的甜蜜點這裏: http://www.sqlite.org/inmemorydb.html

相關問題