如何从64位Python进程访问32位进程生成的date变量?
需求可行性及实现方案
这个需求完全可行,有多种实现方式,其中用JSON文件共享数据是最省心的方案,当然也可以选择其他进程间通信方式,具体如下:
一、JSON文件共享(最推荐)
因为data.py是定期运行的,每次生成或更新date变量后,直接把格式化好的d/m/Y字符串写入JSON文件,main.py在无限循环里定期读取这个文件即可,跨32/64位环境完全没有问题。
示例代码
- 32位环境的
data.py:
import datetime import json # 生成目标date变量 date = datetime.datetime.now() # 将格式化后的日期写入JSON文件 with open("date_data.json", "w", encoding="utf-8") as f: json.dump({"formatted_date": date.strftime("%d/%m/%Y")}, f)
- 64位环境的
main.py读取逻辑:
import json import time while True: try: with open("date_data.json", "r", encoding="utf-8") as f: data = json.load(f) formatted_date = data["formatted_date"] print(f"获取到的日期:{formatted_date}") except FileNotFoundError: print("暂未获取到日期数据") # 每隔一段时间读取一次,周期和data.py的运行频率匹配即可 time.sleep(60)
这种方式的优点是实现简单,不需要处理复杂的进程通信逻辑,容错性也强——就算某一次data.py运行失败,main.py最多只是读取旧数据或提示未获取到,不会崩溃。
二、其他可选方案(适合实时性要求更高的场景)
如果不想用文件,也可以通过以下方式实现跨进程数据传递,但复杂度更高,你的需求是定期运行,其实没必要:
- 本地套接字:
main.py启动一个本地socket服务端,data.py每次运行时作为客户端连接服务端,把日期数据发送过去。 - 命名管道:在系统中创建一个命名管道,
data.py往管道写数据,main.py从管道读取。 - 共享内存:利用Python的
multiprocessing模块或第三方库实现跨进程共享内存,但要注意32/64位环境下内存地址的兼容性,实现起来最麻烦。
总结
如果只是定期获取date变量,直接用JSON文件共享是最优解,完全能满足你的需求,不需要折腾更复杂的方案。
内容的提问来源于stack exchange,提问作者Py_trader
相关产品推荐
相关产品推荐

