欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

python 全局变量的使用

程序员文章站 2024-01-21 23:17:58
...

最近在改写同事训练代码的不支持算子,结果在在改写的过程中发现,训练跟测试流程中不支持的算子竟然输入输出尺寸是不同的,所以开始针对测试改写的代码,训练的时候报错,修改为训练支持的算子后,跑完一个epoch训练数据的时候,验证测试会报错。定位了很久才发现这个问题。所以需要针对不同的阶段使用不同的算子。所以需要在forward阶段,添加不同的分支标志及处理流程。
Python中global关键字可以定义一个变量为全局变量,但是这个仅限于在一个模块(py文件)中调用全局变量,在另外一个py文件 再次使用global x 也是无法访问到的,因为在这个py模块中并没有一个叫做x的变量,于是就会报错:未定义变量。
再网上查了下,发现有人提供了一个比较好用的全局变量管理模块。

#!/usr/bin/python
# -*- coding: utf-8 -*-

def _init():
    global _global_dict
    _global_dict = {}

def set_value(name, value):
    _global_dict[name] = value

def get_value(name, defValue=None):
    try:
        return _global_dict[name]
    except KeyError:
        return defValue

设置全局变量

#!/usr/bin/python
# -*- coding: utf-8 -*-

import sys
import globalvar as gl

gl._init()

gl.set_value('train', True)

获取使用全局变量

#!/usr/bin/python
# -*- coding: utf-8 -*-

import globalvar as gl

trainflag = gl.get_value('train')


if trainflag:
    ...
else:
    ...

 

相关标签: Python