如何从正在运行的Python脚本中获取实时更新的变量值
问题解答
原有思路可行性判断
你的思路不可行。Python中两个独立运行的脚本属于完全隔离的进程,各自拥有独立的内存空间,变量无法直接跨进程共享。
你执行monitor.py时,from mainbot import x的逻辑是:将mainbot.py作为模块加载执行,拿到加载完成时刻的x值副本存储到monitor.py的进程内存中,这个过程和你之前单独启动运行的mainbot.py进程没有任何关联,自然拿不到实时更新的x。
实现方案
最简单的实现方式是用本地文件作为中间缓存做数据同步,复杂度低且能满足需求:
步骤1:修改mainbot.py,每次更新x后写入缓存文件
import time import json x = [1,2,3,4] # Existing list for i in range (5,5000): x.append(i) # 每次更新x后同步写入缓存文件 with open("x_cache.json", "w", encoding="utf-8") as f: json.dump(x, f) time.sleep(5) print(x)
步骤2:修改monitor.py,读取缓存文件获取最新x值
如果只需要单次获取最新值:
import json with open("x_cache.json", "r", encoding="utf-8") as f: x = json.load(f) print(x)
如果需要持续监控实时值:
import json import time while True: with open("x_cache.json", "r", encoding="utf-8") as f: x = json.load(f) print(f"当前x的最新值:{x}") time.sleep(1) # 可根据需求调整刷新间隔
如果有更高性能要求或者跨设备同步需求,也可以改用Socket通信、Redis中间件等方案实现。
内容的提问来源于stack exchange,提问作者Χρήστος Γεωργίου
相关产品推荐
相关产品推荐

