3

我凌乱的解决方案:

我是一个初级python程序员,由于缺乏高级知识,我经常使用原始工具来完成我的高级项目。目前我正在尝试在运行时在程序之间交换数据。我尝试过编写和阅读文本文件。每个程序都有一个单独的只写文本文件,以避免两个程序同时写入一个文件。

为了将所有数据收集到一个文件中,我编写了一个单独的程序来读取只写文本文件并将所有数据合并到一个文件中。然后,所有程序都可以访问该文件中所有其他程序的变量。

我要求更简单的解决方案:

尽管上述解决方案运行良好,但我正在尝试找到一种更优雅的方式在 Python 程序之间共享变量。你能告诉我在 Python 中是否有更好的方法来做到这一点?

太感谢了。

4

2 回答 2

4

Memcached或多或少是为您所描述的而设计的,因为变量与内存一样易失。

Redis是另一个不错的选择,与 memcached 有一些相似之处,但可以选择使数据持久化。

我能想到的所有其他直接共享选项都直接属于数据库类别(无论是否 SQL),除了使用平面文件,这就是你现在正在做的。

最后,您可以重构这些程序,以便它们可以相互提供服务,而不是直接共享值,从而可以在需要时交换信息。在某些情况下,这可能会增加开销和复杂性,但无需在变量值发生更改时验证它们的缓存。

于 2012-08-02T12:28:00.783 回答
2

You could use sockets to communicate between the programs. However, if the data you're sharing is always relevant to all programs then, as others have suggested, a central database would be a better fit.

Alternatively, if all the programs are written in Python, you could launch them all from the same interpreter on different threads. Threads share the same memory space so sharing variables between them is already built-in (just make sure to read/write them in a thread-safe way).

于 2012-08-02T13:28:10.427 回答