You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python如何读取另一正在运行进程内的变量值

跨独立Python进程读取运行时变量的实现方案

进程的内存空间是相互隔离的,原有代码中直接from a import x会在b的进程空间内重新执行a.py的完整代码,拿到的是当前新进程内初始化的x变量,和已经在运行的a进程完全无关,因此值不匹配。

方案1:临时文件中转(最易实现)

无需额外依赖,改造成本极低,适合普通低频率查询场景。

  • 修改后的a.py代码:
x = 0
while True:
    x = x + 1
    # 每次更新x后写入本地临时文件,Windows系统可修改为自定义路径
    with open("/tmp/current_x.cache", "w") as f:
        f.write(str(x))
    print(x)
  • 配套b.py代码:
try:
    with open("/tmp/current_x.cache", "r") as f:
        current_x = int(f.read().strip())
    print("Current X value =", current_x)
except FileNotFoundError:
    print("a.py进程未启动或已退出")

方案2:Socket通信(稳定可扩展)

适合需要跨设备交互、或需要多查询端的场景,通信稳定。

  • 修改后的a.py代码(作为服务端后台监听查询):
import socket
import threading

x = 0

# 后台线程处理查询请求
def query_server():
    server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    server.bind(("127.0.0.1", 9876))
    server.listen(5)
    while True:
        conn, _ = server.accept()
        conn.sendall(str(x).encode("utf-8"))
        conn.close()

threading.Thread(target=query_server, daemon=True).start()

while True:
    x = x + 1
    print(x)
  • 配套b.py代码(作为客户端请求数据):
import socket

client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
try:
    client.connect(("127.0.0.1", 9876))
    current_x = int(client.recv(1024).decode("utf-8").strip())
    print("Current X value =", current_x)
except ConnectionRefusedError:
    print("a.py进程未启动或已退出")

方案3:共享内存(性能最高)

适合高频率读写、对性能要求极高的场景,IO开销极小。

  • 修改后的a.py代码:
from multiprocessing import shared_memory

x = 0
# 创建名称为x_share的共享内存块,4字节足够存储普通int类型
shm = shared_memory.SharedMemory(name="x_share", create=True, size=4)

while True:
    x = x + 1
    # 将x转为字节写入共享内存
    shm.buf[:4] = x.to_bytes(4, byteorder="little")
    print(x)
# 进程正常退出前需执行资源清理:shm.close()、shm.unlink()
  • 配套b.py代码:
from multiprocessing import shared_memory

try:
    shm = shared_memory.SharedMemory(name="x_share", create=False)
    current_x = int.from_bytes(shm.buf[:4], byteorder="little")
    print("Current X value =", current_x)
    shm.close()
except FileNotFoundError:
    print("a.py进程未启动或已退出")

内容的提问来源于stack exchange,提问作者Andres V

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 17:48:04