python实现全局变量共享,一个全局变量在多个文件中使用

news2024/11/23 0:59:38

因为业务需求要将抓到的数据进行累加统计,而且还要间隔三秒钟将这个数据推送到服务端,所以就要实现一个全局变量来记录这个数据,而且推送服务要每隔三秒钟就推送一次到服务端。之前使用了一个全局文件common.py,里面存储这个变量total,然后一个设置total=1000,另一个读total,但是发现读不到修改后的值,不知道问题出在哪里。后来将这个变量设置为一个全局对象的属性,然后再修改这个属性,然后另一个文件中读取这个属性,就好了

基本的目录结构:

common.py用来存储全局变量的:

class Global:
    total = 0
    name = ""

 first.py是用来修改全局变量的:

import threading
import time
from src.common import Global


def add_count():
    while True:
        Global.total += 1
        print(f"add_count开始设置: {Global.total}\n")
        time.sleep(3)


def run():
    print("first run")
    t = threading.Thread(target=add_count)
    t.start()


if __name__ == '__main__':
    run()

second.py是用来读取这个变量的:

import threading
import time
from src.common import Global


def read_count():
    while True:
        print(f"read_count全局变量是:{Global.total}\n")
        time.sleep(3)


def run():
    print("first run")
    t = threading.Thread(target=add_count)
    t.start()


if __name__ == '__main__':
    run()

最后还需要一个main.py,这个是主程序入口,不能单独运行first.py和second.py,因为那样的话, 相当于两个进程,这个并不是两个进程间通讯,所以要保证这两个程序运行在同一进程中,所以就需要使用统一的入口来管理:main.py

import threading
from src.first import add_count
from src.second import read_count


def main():
    print("运行主程序")
    t1 = threading.Thread(target=add_count)
    t2 = threading.Thread(target=read_count)
    t1.start()
    t2.start()


if __name__ == '__main__':
    main()

 最终实现的效果:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1043716.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【CV学习笔记】tensorrtx-yolov5 逐行代码解析

1、前言 TensorRTx(下文简称为trtx)是一个十分流行的利用API来搭建网络结构实现trt加速的开源库,作者提到为什么不用ONNX parser的方式来进行trt加速,而用最底层的API来搭建trt加速的方式有如下原因: Flexible 很容易修改模型的任意一层,删…

渗透测试——信息收集思路

文章目录 信息收集域名与 IPOSINTCDNCDN的作用如何检测是否存在CDN CDN 绕过多地Ping邮件服务器子域名真实IP寻找国外地址请求查找老域名查找关联域名信息泄露/配置文件网站漏洞DNS记录,证书域名历史 搜索引擎语法WHOIS端口对外开放情况Nmap 网站的三种部署模式网站…

chrome extensions mv3通过content scripts注入/获取原网站的window数据

开发插件的都知道插件的content scripts和top window只共享Dom不共享window和其他数据,如果想拿挂载在window的数据还有点难度,下面会通过事件的方式传递cs和top window之间的数据写一个例子 代码 manifest.json 这里只搞了2个js,content.…

DataX - 在有总bps限速条件下,单个channel的bps值不能为空,也不能为非正数

更新服务器上的datax版本后,发现执行以前的任务全都失败,查看日志都有报 com.alibaba.datax.common.exception.DataXException: Code:[Framework-03], Description:[DataX引擎配置错误,该问题通常是由于DataX安装错误引起,请联系…

ssl证书 阿里的域名,腾讯云的证书

目录 1.腾讯云申请ssl免费证书 2.去阿里云进行解析 3.回到腾讯云 4.nginx的配置 说明:阿里云的免费证书用完了(每年可以申请20个),还有个项目要用证书,第三方的证书免费的都是90天的。看了下腾讯云业可以申请免费的…

史上最全的公司各种体系流程图,直接拿走!

大家好,我是老原。 优秀企业和卓越企业的区别在哪里? 两个字:流程。 流程的水平高低在一定程度上也体现了项目经理做项目的能力,一个企业能否持续成功的过程能力。 拥有稳定高效的流程管理体系,项目经理的管理水平…

ABB机器人如何在示教器上查看输入输出以及强制输出DO信号

ABB机器人如何在示教器上查看输入输出以及强制输出DO信号 如下图所示,点击左上角的菜单—选择“输入输出“, 如下图所示,进入输入输出画面后,点击右下角的视图,选择“数字输出“, 如下图所示,此时可以看到所有的DO信号及其当前值, 如下图所示,这里以 Local_IO_0_DO1 为…

AI大模型服务上线,助力企业AI大模型应用落地

在数字时代的浪潮中,人工智能(AI)技术的发展和应用已经深入到我们生活的方方面面。其中,企业AI大模型作为AI技术的重要形式之一,正在成为推动企业创新、提高效率和优化决策的关键力量。为顺应AI大模型的新趋势需求,近日&#xff0…

游戏技术亮点|Aavegotchi 与 GameSwift 建立合作伙伴关系

构建一个优秀的游戏只是成功发布的一部分,让数百万玩家体验这款游戏才是真正的乐趣所在。 这也是为什么我们很高兴宣布与 GameSwift 建立了新的合作伙伴关系,GameSwift 是一款先进的模块化游戏区块链,采用 zkEVM 技术构建,是全球…

【通意千问】大模型GitHub开源工程学习笔记(1)

9月25日,阿里云开源通义千问140亿参数模型Qwen-14B及其对话模型Qwen-14B-Chat,免费可商用。 立马就到了GitHub去fork。 GitHub: GitHub - QwenLM/Qwen: The official repo of Qwen (通义千问) chat & pretrained large language model proposed b…

解决谷歌Redux DevTools调试React+Typescript项目数据对不上/连接不上问题

上文 ReactTypescript项目环境中搭建并使用redux环境 我们创建了一个redux项目的环境 但是我们用谷歌浏览器插件调试 会发现 要不 匹配的数据有问题 看不到数据 要不 就压根连接不到 而且 我们点击加减号 去改变值 调试工具也没有任何反应 我们终端输入 npm install --save-d…

VSCode安装离线插件

1. 打开 VSCode 插件市场网址 Extensions for the Visual Studio family of product,输入你想要的插件名称,比如这里我想要安装的是 Markdown All in One 插件 2. 点击进入插件主页,点击右侧的 Download Extension 链接,得到下载…

Hugging News #0925: 一览近期的新功能发布

每一周,我们的同事都会向社区的成员们发布一些关于 Hugging Face 相关的更新,包括我们的产品和平台更新、社区活动、学习资源和内容更新、开源库和模型更新等,我们将其称之为「Hugging News」。本期 Hugging News 有哪些有趣的消息&#xff0…

通讯网关软件013——利用CommGate X2ORACLE实现Modbus RTU数据转储ORACLE

本文介绍利用CommGate X2ORACLE实现从Modbus RTU设备读取数据并转储至ORACLE数据库。CommGate X2ORACLE是宁波科安网信开发的网关软件,软件可以登录到网信智汇(wangxinzhihui.com)下载。 【案例】如下图所示,实现从Modbus RTU设备读取数据并转储至ORACL…

【漏洞复现】某友GRP-U8 SQL注入

漏洞描述 某友GRP-U8是某友软件推出的企业级管理软件套件,旨在助力企业实现全面数字化管理及业务优化,某友GRP-U8的bx_historyDataCheck.jsp接口对用户传入的参数未进行有效的过滤,直接拼接至SQL查询的语句中,导致SQL注入漏洞,攻击者可利用该漏洞获取数据库的敏感信息 …

springboot实战(八)之整合redis

目录 序言: 环境: 依赖: 配置: 测试: redis序列化配置: 连接池: 序言: Redis是我们Java开发中,使用频次非常高的一个nosql数据库,数据以key-value键…

Linux下使用yum安装的东西都去哪儿了?(新手友好)

常见的安装路径 使用yum安装的软件包通常都会遵循相似的目录结构 安装路径含义/etc配置文件/var/log日志文件/usr/sbin可执行文件(包括服务管理工具) 面对不同的软件如何看安装位置 上面给出的是一些软件包安装几乎必备的几个安装路径,具体用yum去安装不同的软件…

element-ui form表单,内嵌表单数据校验

在最近开发的功能的过程中,遇到一个很复杂的表单;外层一个大表单;里面有一项是动态添加的,而且内嵌一个表单。每一项还有校验规则;如下图 记录一下调试结果。 无论多少层form, 注意几个事项; form的model/ref; form_item的prop这个关系到,校验作用具体那个框框 数据…

【LeetCode热题100】--48.旋转图像

48.旋转图像 给定一个 n n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。 你必须在原地旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要使用另一个矩阵来旋转图像。 使用辅助数组 class Solution {public void rotate(int[][] matrix)…

2023-9-26 JZ 复杂链表的复制

题目链接:复杂链表的复制 import java.util.*; /* public class RandomListNode {int label;RandomListNode next null;RandomListNode random null;RandomListNode(int label) {this.label label;} } */ public class Solution {public RandomListNode Clone(Ra…