我对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