python不同模块统一管理操作全局变量

python路径操作新标准:pathlib 模块 之前如果要使用 python 操作文件路径,我总是会条件反射导入 os.path。 而现在,我会更加喜欢用新式的 pathlib, 虽然用得还是没有 os.path 熟练,但是以后会坚持使用。 pathlib 库从 python3.4 开始,到 python3.6 已经比较成熟。如果你的新项目可以直接用 3.6 以上,建议用 pathlib。相比于老式的 os.path 有几个优势: 老的路径操作函数管理比较混乱,有的是导入 os, 有的又是在 os.path 当中,而新的用法统一可以用 pathlib. 阅读详情

全局变量仅限于单实例模式哈,对于多实例集群如k8s docker则建议使用redis来实现

以上请特别留意哈,比如docker中多个pod基本上是没有办法共享全局变量的,一直漂,读的值和设的值会有问题

OK,言归正传,对于单实例的模式而言要如何做到不同模块统一管理全局变量呢?

一、全局变量管理模块

首先定义一个全局变量管理模块

# common/gloabalvar.py
# -*- coding:utf-8 -*-
"""
global var module
"""


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
二、初始化及定义(设置)全局变量
# main.py

import app.common.globalvar as globalvar

if __name__ == "__main__":
	# init global var
	globalvar._init()
	globalvar.set_value('itsm_deadline', SettingConfig.ITSM_DAILY_DEADLINE)
	globalvar.set_value('email_subject', SettingConfig.EMAIL_SUBJECT)
	globalvar.set_value('email_recipients', SettingConfig.EMAIL_RECIPIENTS)
	globalvar.set_value('auto_submit_status', SettingConfig.AUTO_SUBMIT_STATUS)
三、获取全局变量
# business.py
import app.common.globalvar as globalvar

status = globalvar.get_value('auto_submit_status')
附加:API管理全局变量,都是基于上述三点完成

对于flask-restful的web应用则可以通过API接口查看全局变量的值以及通过API接口设置和管理它们

# app/api/v1/test/test.py
from flask_restplus import Resource
import app.common.globalvar as globalvar
from .marshal_model import admin_api_ns as api

@api.route('/')
class GlobalVar(Resource):
    """全局变量管理API"""
    @api.doc('Get all the global var')
    @api.response(HTTP_GET_SUCCESS, 'query success')
    def get(self):
        """查询所有的全局变量"""
        glist = globalvar._global_dict
        return glist, HTTP_GET_SUCCESS


@api.route('/auto')
class AutoSubmit(Resource):
    """查看及修改自动状态的API"""
    @api.doc('check auto submit status')
    @api.marshal_with(set_autosubmit)
    @api.response(HTTP_GET_SUCCESS, 'query success')
    def get(self):
        """测试查看自动状态开关状态"""
        status = globalvar.get_value('auto_submit_status')
        # status = query_autojob_status()
        return {'status': status}, HTTP_GET_SUCCESS

    @login_required
    @admin_required
    @api.doc('set auto submit the planlist everyday')
    @api.expect(set_autosubmit)
    def post(self):
        """设置每天定时自动开关"""
        data = request.json
        status = data.get('status')
        globalvar.set_value('auto_submit_status', status)
        # resp, returncode = update_autojob_status(status)
        return {'message': 'success'}, HTTP_POST_SUCCESS
python 多进程共享全局变量之Manager()详解 主要介绍了python 多进程共享全局变量之Manager()详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 立即下载

相关推荐

国产HDMI2.0芯片GSV2011怎么选?手把手教你用它设计音视频采集卡(附FPGA/海思对接指南)

本文详细解析国产HDMI2.0芯片GSV2011在音视频采集卡设计中的应用,涵盖芯片选型、硬件设计要点及与FPGA/海思平台的对接指南。GSV2011凭借4K@60Hz支持、音频提取嵌入功能和高集成度,成为音视频设备的核心选择,助力开发者快速实现高性能采集卡设计。

weixin_30181209的博客 332

python 设置全局变量

python 设置全局变量,跨文件使用

qq_38122800的博客 8899

VS2019 C# MySQL 学生信息增删改查(一、增删)

VS2019 C# MySQL 学生信息增删改查 由于刚刚学习VS2019,入手的第一个例子是编写一个简单的增删改查。这里,我以学生信息为例,进行详细的过程描述以及代码实现。 一、 新建一个Windows窗体应用程序 1、创建新项目界面,如下图所示。 2、更改项目名称,当然不修改也可以。我这里的是“StudentInfoSystem”;项目存放位置路径根据自己需要进行更改;“将解决方案和项目放在同一目录中”前面的勾选框,选不选都可以;点击“创建”,如下图所示。 二、前期准备工作 1、将Form1属性中

青哥 1万+

python项目实现配置统一管理的方法

一个比较大的项目总是会涉及到很多的参数,最好的方法就是在一个地方统一管理这些参数。最近看了不少的python项目,总结了两种很有意思的配置管理方法。 第一种 基于easydict实现的配置管理 首先需要安装numpy、easydict以及yaml: pip install numpy pip install easydict pip install yaml 就可以了。 然后定义配置类confi...

weixin_33951761的博客 982

ubuntu20.04运行VINS-Mono(跑EuRoC数据集)

在VINS-Mono主工程目录下的config子目录中找到euroc文件夹,并打开其中的euroc_config.yaml文件,将其中结果输出保存路径修改为本地的绝对路径或相对路径。应该是这个功能包路径没有成功得到,直接注释了这一行,改成你电脑中安装的vins_mono的pose_graph这个功能包路径,备注:直接下可能因为包太大下不下来,我是下载的zip,再解压,将VINS-Mono-master重命名为VINS-Mono。,当时参考了几篇不同的文章,感觉我的这个配置应该也可以编译,就先尝试了一下。

2301_80311277的博客 2980

STM32巡线小车PID调参实战:从五路灰度传感器数据到稳定运行的避坑指南

本文详细介绍了STM32巡线小车的PID调参实战,从五路灰度传感器数据处理到PID参数优化,提供了系统化的调试方法和常见问题解决方案。通过加权平均法计算偏移量,逐步调整比例、积分、微分参数,实现小车稳定巡线。文章还涵盖了定时器配置、控制周期优化及高级调试技巧,帮助开发者避开常见陷阱,提升巡线性能。

weixin_42570484的博客 193

python中全局变量的含义_python中的全局变量用法分析

本文实例分析了python中的全局变量用法。分享给大家供大家参考。具体分析如下:Python是一种面向对象的开发语言,在函数中使用全局变量,一般应作全局变量说明,只有在函数内经过说明的全局变量才能使用,这里就来介绍下Python全局变量有关问题。首先应该说明的是需要尽量避免使用Python全局变量。不同的模块都可以自由的访问全局变量,可能会导致全局变量的不可预知性。对全局变量,如果程序员甲修改了_...

weixin_32825955的博客 795

CST仿真实例001:圆极化平板天线仿真

CST仿真实例001:圆极化平板天线仿真实例

weixin_47638568的博客 1万+

Python全局变量跨模块变量定义和使用

在同一个py脚本中,定义在所有函数之外的变量可以理解为全局变量,因为所有函数可以直接访问函数外的变量(但不能访问其他函数的私有变量),这里涉及到变量的作用域,一般分为函数作用域和全局作用域,函数作用域包含在全局作用域中,子作用域可以访问全局作用域的变量,全局作用域不能访问子作用域的变量。

qq_30386941的博客 5524

【系统分析师】高分论文:论软件开发方法及应用(数据中心CMDB 系统)

【摘要】本文以作者负责的"数据中心CMDB系统"建设项目为例,探讨了系统分析和建模方法在IT项目中的应用实践。项目基于ITIL框架,旨在整合分散的配置信息,构建统一CMDB平台。通过分析结构化、面向对象和构件化三种开发方法特点,项目最终采用结构化分析与V模型结合的方式,并融入面向对象设计理念。系统经过4个月开发后上线,通过增量迭代满足不同数据源接口需求,采用适配器模式提高兼容性。经过2个月试点运行和优化,系统已稳定运行并获得用户认可,为后续IT服务管理集成奠定了基础。项目实施使作者积累了

数据知道的博客 4300

MCAL知识点(十):ERU驱动配置详解

ERS:外部请求单元ETL:中断逻辑单元OGU:输出逻辑单元MCU里面配置要使用的功能和选择输入的管脚,注意上述模块关注点讲述的ERU必须和边沿检测模块相关联。

梦想技术家 1223

python实现超级全局变量(跨文件跨模块)

python实现跨文件夸模块全局变量

恒安嘉新66的博客 3613

Cyclone DDS背景技术

DDSI标准与DDS 1.2和1.4标准密切相关,DDSI中的实体与DCPS中的实体之间有明确的对应关系。但是,这种对应关系不是一一对应的。 此处,仅仅对DDSI规范的概念进行描述,暂不涉及Eclipse Cyclone DDS实现的细节。DDSI规范的概念将帮助对互操作性interoperability感兴趣的技术人员了解规范的外延边界和Eclipse Cyclone DDS实现的开始。

pony12的专栏 948

python定义跨模块的全局变量

尽管某些书籍上总是说避免使用全局变量,但是在实际的需求不断变化中,往往定义一个全局变量是最可靠的方法,但是又必须要避免变量名覆盖。 Python 中 global 关键字可以定义一个变量为全局变量,但是这个仅限于在一个模块(py文件)中调用全局变量: 我们知道Python使用变量的时候是可以直接使用的,x=[] ,y=2,z="123",而不需要先定义(var x; var y=2;var z='222'),这样的话,在函数内部就无法操作外部的变量了,因为它总会认为你是在定义一个新变量并且赋值,不过g.

alex1801 2070

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Python跨文件全局变量的使用技巧

特别鸣谢以下更多python教程请到友情连接: 菜鸟教程https://www.piaodoo.com 初中毕业读什么技校 http://cntkd.net茂名一技http://www.enechn.comppt制作教程步骤 http://www.tpyjn.cn 兴化论坛http://www.yimoge.cn 电白论坛 http://www.fcdzs.com永城信息港 http://www.1l4u.com茂名一技有什么专业 http://www.jeob.cn茂名市高级技工学校 http://

菜鸟教程 7530

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Python全局变量:小白也能懂的完全指南

全局变量就像教室里的公共储物柜,所有同学(函数)都能看到和使用它。比如在代码最外层定义的变量,默认就是全局的。这种变量在程序运行期间一直存在,任何函数都可以访问。

BlackironPanther23的博客 739

Python 全局变量使用

本文总结了Python中全局变量的使用规则与注意事项。全局变量在模块顶层定义,在函数中使用时分为三种情况:只读访问不需要global,修改可变对象内容不需要global,但重新赋值变量必须使用global。关键规则包括:赋值操作默认创建局部变量、修改可变对象内容不需要声明、重新绑定变量必须声明。文章还对比了global和nonlocal的区别,提供了最佳实践建议,并通过练习测试理解程度。最后用口诀"读不用global,改内容也不用;只有赋值=,才需要global"帮助记忆核心要点。

hahaha_1112的博客 670

python模块

强大的标准库奠定了python发展的基石,丰富和不断扩展的第三方库是python壮大的保证。我们可以进入PyPI官网():可以看到发布的第三方库达到了十多万种,众多的开发者为Python贡献了自己的力量。表 常用第三方库大汇总分类库名称说明环境管理P非常简单的交互式 python 版本管理工具Pyenv简单的 Python 版本管理工具Vex可以在虚拟环境中执行命令创建独立 Python 环境的工具包管理pipPython 包和依赖关系管理工具pip-tools。

qq_65463941的博客 1628

Python中内置的日志模块logging用法详解

https://cloud.tencent.com/developer/article/1587902

良知犹存的博客 6449

第二部分 Python提高—模块化编程

强大的标准库奠定了python发展的基石,丰富和不断扩展的第三方库是python壮大的保证。我们可以进入PyPI官网(https://pypi.org)可以看到发布的第三方库达到了十多万种,众多的开发者为Python 贡献了自己的力量。常用第三方库大汇总分类库名称说明环境管理P非常简单的交互式 python版本管理工具Pyenv简单的 Python 版本管理工具Vex可以在虚拟环境中执行命令创建独立 Python 环境的工具包管理pipPython 包和依赖关系管理工具。

weixin_44006060的博客 2355

【python第三方库】路径操作模块pathlib详解

pathlib是跨平台的、面向对象的路径操作模块,可适用于不同的操作系统,其操作对象是各种操作系统中使用的路径(包括绝对路径和相对路径),pathlib有两个主要的类,分别为PurePath和Path。在输入文件路径的基础上,通过函数,构造输出文件路径,为后续处理、存储做好准备。in_path:输入文件路径path_str:文件路径构造字符file_suffix:输出文件后缀。...

All_In_gzx_cc的博客 1618

你所熟悉的Python模块

“量变引起质变”是哲学中一个重要的理论。量变为什么会引起质变呢?本质上理解,随着数量的增加,管理方式会发生本质的变化;旧的管理方式完全不适合,必须采取新的管理方式。

nine_mink的博客 905

python中关于模块的基础

模块化基础一级目录1. 模块化(module)程序设计理念标准库模块(standard library) 一级目录 1. 模块化(module)程序设计理念 程序越来越复杂,语句多了,就很自然的会将实现同一个功能的语句封装到函数中,统一管理和调用,于是函数便随之诞生了。 同样的思路,“物以类聚”,我们将同一类型对象的“数据和行为”,也就是“变量和函数”,放到一起统一管理和调用,于是“类和对象”诞生了。 程序继续复杂,函数和类更加多了,于是就将实现类似功能的函数和类统统放到一个模块中,于是“模块”诞生了。 程

qq_43173514的博客 622

关于模块操作

第七章 模块 1. 模块化程序设计理念 1.1 模块和包 随着数量增加,管理方式会发生本质变化 函数的诞生:语句越来越多,程序越来越复杂,将同一个功能的语句封装到函数当中 类与对象的诞生:函数和变量变多了,将同一类型对象的”数据和行为“,放到一起统一管理和迪奥哟 模块的诞生:函数和类增多,将实现类似功能的函数与类统一放到一个模块当中 包的诞生:实现类似功能的模块放在一起 1.2 标准库模块 与函数类似,模块也分为标准库模块和用户自定义模块 Python标准库提供操作系统功能、网络通信、文本处理、文件处理、

chuchu1994的博客 591

对于python来说、一个模块就是一个文件-PYTHON中的包和模块

为了更加友好的对python代码进行组织管理,python中出现了包和模块的概念类似生活中整理我们的物品一样,将代码按照不同的功能进行整理整合,可以很大程度的提升代码可读性和代码质量,方便在项目中进行协同开发!这一部分,主要从以下几个部分进行说明:(1) 包和模块的定义(2) 包和模块的复用a) import引入和from..import引入b) 绝对引入和相对引入(3)...

weixin_37988176的博客 1256

Python——模块 [ 笔记 ]

Python——模块(module)01. 模块化(module)程序设计概念模块和包概念的进化史标准库模块(standard library)为什么需要模块化编程模块化编程的流程02. 模块的导入import语句导入from...import导入\_\_import\_\_()动态导入import 语句和 from...import 语句的区别模块的加载问题03. 包(package)的使用包(...

weixin_43595176的博客 665
上一篇: python3 flask-restful xlsxwriter模块导出MYSQL数据库查询结果到EXCEL浏览器下载
下一篇: CMD/SHELL命令执行python程序报错无法找到自定义项目名模块ModuleNotFoundError: No module named 'XXX' 解决方法
arnolan
博客等级 码龄19年 45粉丝 32原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值