Python程序之间的简单通信?

3
我有两个Python程序。 一个是数据收集程序。 另一个是使用Tensorflow进行分析和预测的程序。
(在Windows操作系统上,使用python3.5本地环境)
由于数据收集程序使用的API,需要32位环境。而您知道,由于TensorFlow的原因,另一个程序需要64位环境。
所以,
问:我只需要向TensorFlow发送一个字典数据,并返回一个整数作为返回值。
最简单的相互发送数据的方法是什么?
感谢您的时间。

你发送的列表中有什么?整数吗? - JohanL
@JohanL 我搞错了,它不是列表而是字典。所有项都是整数。 - Aishel Re
2
最简单的方法可能是将数据序列化(json / csv / pickle / 等等)并将其转储到标准文件中,一方面读取文件并进行反序列化。您还可以探索更高效的解决方案,如套接字或共享内存。 - jedwards
2
@jedwards 我同意,但连续数据可能存在同步写入和读取的问题。稍微复杂一点的解决方案是通过管道(如果在Windows的32位和64位进程之间可用)或套接字发送序列化数据。不过,仍需要某种协议来确保传递所有数据。 - JohanL
2个回答

2

最简单的方法是让一个程序将数据保存到文件中,然后让另一个程序读取该文件。建议使用JSON格式来实现,可以通过json模块来实现。

import json

#Write
with open('file.txt', 'w') as file:
    file.write(json.dumps(myDict))

#Read
with open('file.txt') as file:
    myDict = json.load(json_data)

然而,根据您的使用情况,它可能不是最佳方法。套接字是常见的解决方案。管理器也非常强大,但在我看来有些过度设计。
如需更多信息,请查看Python团队维护的列表,其中列出了可以用于进程间通信的机制。

1
如果您想通过网络连接两个程序,我建议您查看 Pyro4。基本上,它可以使您在另一台计算机或另一个Python进程中运行的代码上执行普通的Python方法调用,但通过网络实现。使用它时,您(几乎)不必担心低级网络细节。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接