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


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

    基本的目录结构:

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

    1. class Global:
    2. total = 0
    3. name = ""

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

    1. import threading
    2. import time
    3. from src.common import Global
    4. def add_count():
    5. while True:
    6. Global.total += 1
    7. print(f"add_count开始设置: {Global.total}\n")
    8. time.sleep(3)
    9. def run():
    10. print("first run")
    11. t = threading.Thread(target=add_count)
    12. t.start()
    13. if __name__ == '__main__':
    14. run()

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

    1. import threading
    2. import time
    3. from src.common import Global
    4. def read_count():
    5. while True:
    6. print(f"read_count全局变量是:{Global.total}\n")
    7. time.sleep(3)
    8. def run():
    9. print("first run")
    10. t = threading.Thread(target=add_count)
    11. t.start()
    12. if __name__ == '__main__':
    13. run()

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

    1. import threading
    2. from src.first import add_count
    3. from src.second import read_count
    4. def main():
    5. print("运行主程序")
    6. t1 = threading.Thread(target=add_count)
    7. t2 = threading.Thread(target=read_count)
    8. t1.start()
    9. t2.start()
    10. if __name__ == '__main__':
    11. main()

     最终实现的效果:

  • 相关阅读:
    java如何实现单例设计模式
    Git笔记——3
    Java中PDF文件传输有哪些方法?
    Java智慧工地SaaS管理平台源码:AI/云计算/物联网
    Scala012--Scala中的常用集合函数及操作Ⅲ
    排错-关于clion not found visual studio 的问题
    TypeScript 基础学习
    nacos配置管理
    CANoe(持续更新修改...)
    m基于matlab的光通信的信道估计,均衡,抑制papr误码率仿真,对比ZF,RLS,MMSE三种算法
  • 原文地址:https://blog.csdn.net/weixin_44786530/article/details/133043889