我對Python非常陌生,我無法找到一種方法來獲得在不同python文件間共享的靜態變量......在Java中,似乎很直接所以...這裏是我想要做的事:在文件中共享的Python中的靜態變量
data.py
class Shared(object):
list_vars = []
var = ""
@staticmethod
def print_vars():
print "list_vars = " + str(Shared.list_vars)
print "var = " + Shared.var
user1.py
import time
from data import Shared
Shared.list_vars.append("001")
time.sleep(5.0)
Shared.print_vars()
# It prints:
# list_vars = ['001']
# var =
user2.py
import time
from data import Shared
Shared.var = "002"
time.sleep(5.0)
Shared.print_vars()
# It prints:
# list_vars = []
# var = 002
對不起,這可能不是最好的例子,但它捕獲的想法...我的問題是,如果我想有:
list_vars = ['001']
var = 002
在運行user1.py和user2.py之後的其中一個/甚至一些其他python文件或類中(我正考慮將user1.py和user2.py作爲兩個子程序放在同一個軟件包中,通常是同時運行),那麼「Python方式」是什麼?
非常感謝!
===============================
更新的問題:
要成爲一個更具體一點的問題,請允許我來形容這樣的問題:
data.py
class Shared(object):
list_vars = []
var = ""
@staticmethod
def print_vars():
print "list_vars = " + str(Shared.list_vars)
print "var = " + Shared.var
# Can be considered as a separate thread running in the background, waiting for messages
@staticmethod
def callback(message):
if message.event == "add":
Shared.list_vars.append(message.data)
elif message.event == "remove" and message.data in Shared.list_vars:
Shared.list_vars.remove(message.data)
有兩個額外的文件,user1.py和user2.py,其內容可以暫時被忽略......
所以我們說user1.py和user2.py被在大約相同的時間運行,說時間= 0
在時間= 1,有一個消息到達(與message.event = 「添加」 和message.data = 「001」),在 數據回調功能。PY被觸發並且「001」被加到變量list_vars。
在時間= 2,user1.py更新變量變種在 data.py到「002」。
在時間= 3,如果user2.py要訪問並打印出 變量list_vars和VAR,用最新的值:
- list_vars = [ 「001」]
- VAR = 002
這怎麼能在Python中實現?
非常感謝!
嗨塞爾貝勒斯特,謝謝你的回答,那我解決了在本例中所描述的問題。其實我曾經給可能無法準確地描述我所面臨的問題的例子,所以請原諒我,如果你有時間,你能不能也來看看在這個問題底部的更新?非常感謝! – Fujiolydak 2014-12-04 09:32:21
@Fujiolydak:所提供的所有腳本都在同一個進程中運行,他們會正確地共享數據。如果線程不同,唯一的問題是您可能需要將訪問同步到共享數據。 – 2014-12-04 10:11:55