python读取的数据怎么样才能让所有模块共享
想实现以下操作:从配置文件读取数据放入一个字典中,这个字典的数据怎么样才能让其他的模块共享(数据只读取一次)
本来想用全局变量来实现,但是有问题,不知道问题在哪里,请各位指点,代码如下
#test.py
a = {}
def t1():
globle a
a["1"] = 1
##################################
#mianTest.py
import test
if __name__ = "__main__":
test.t1()
print test.a
################################
#test2.py
import test
print test.a
我的想法是先执行mainTest.py再执行test2.py,但是执行test2.py后,打印的值为空,全局变量为什么没有被修改。
[解决办法]
估计你开2个解释器分别跑脚本,那自然无相关...
[解决办法]
在mianTest.py中首先import了test,那么初始化全局变量a为空,然后执行test.t1()的时候,给a赋值了,因此打印出来的a是有值的。
在test2.py中只import test,初始化全局变量a为空,打印出来的值当然就为空。
你的mainTest和test2的执行之间没有联系,mainTest执行完后,就执行完了,当再执行test2的时候,与你的mainTest是没有关系的,因为它们是两个脚本,所以不管你按什么顺序运行,结果都是一样的。
[解决办法]
#!python# encoding: utf-8# filename: proj_common.pydef readconfig(configfile): print 'parser config file', configfile return dict(path=r'.')proj_setting = readconfig('config.ini')#!python# encoding: utf-8# filename: proj_app1.pyfrom proj_common import *def app1(): print 'Application 1', proj_setting['path']#!python# encoding: utf-8# filename: proj_app2.pyfrom proj_common import *def app2(): print 'Application 2', proj_setting['path']#!python# encoding: utf-8# filename: proj_main.pyfrom proj_common import *from proj_app1 import *from proj_app2 import *app1()app2()