python实现跨文件全局变量的方法

Python021

python实现跨文件全局变量的方法,第1张

python实现跨文件全局变量的方法

在使用Python编写的应用的过程中,有时候会遇到多个文件之间传递同一个全局变量的情况。本文就此给出了如下的解决方法供大家参考。

文件1:globalvar.py

#!/usr/bin/env python2.7

class GlobalVar:

db_handle = None

mq_client = None

def set_db_handle(db):

GlobalVar.db_handle = db

def get_db_handle():

return GlobalVar.db_handle

def set_mq_client(mq_cli):

GlobalVar.mq_client = mq_cli

def get_mq_client():

return GlobalVar.mq_client

文件2:set.py

import globalvar as GlobalVar

def set():

GlobalVar.set_mq_client(10)

print "------set mq_client in set.py------mq_client: " + str(GlobalVar.get_mq_client())

文件3:get.py

#!/usr/bin/env python2.7

import globalvar as GlobalVar

def get():

print "------get mq_client in get.py------mq_client: " + str(GlobalVar.get_mq_client())

文件4:main.py

#!/usr/bin/env python2.7

import set

import get

set.set()

get.get()

其中globalvar.py中定义了两个全局变量,在set.py中的set函数中对其进行赋值,在get.py文件中的get函数取值并打印。main.py函数作为应用入口,调用set和get。

这样就可以看到一个完整的应用中,全局变量的跨文件使用。

可以,把需要调用的那个文件作为模块导入就行。

from xx(文件名,注意不要加后缀.py) import *

这样就把xx文件里的变量导入进主程序了,然后直接用xx文件里的变量就行

简单。一个是通过线程同步。另一个就是全局变量global,加上这个修饰就可以了。python一个进程里的所有东西,都是在一个内存空间的。只要加了global就可以访问。可以用这个全局变量通讯,效果也是一样的。python一个进程只用一个CPU核。所以不存在楼下说的地址空间不一样的问题。

进程间同步也有几个方法。通常使用共享内存,管道,不过最常用的还是socket或者是数据库。还有些分布式组件不是很好用。我通常用mutliprocessing,里面有现成的进程通信办法。

看到你的需求。我觉着可以用两个变量,一个变量记录修改状态,另一个变量要求先锁再进行修改。目前看来如果仅仅是python里实现。直接使用memcache这个工具就可以解决。一个程序读写,其它的程序只需要轮洵就可以了。从原理上讲memcache是一个内存数据库。