使变量可供所有正在运行的程序访问

时间:2012-08-02 12:22:07

标签: python variables integration global

我凌乱的解决方案:

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

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

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

即使上面的解决方案运行良好,我也试图找到一种更优雅的方式来在Python程序中共享变量。你能告诉我在Python中是否有更好的方法吗?

非常感谢你。

2 个答案:

答案 0 :(得分:4)

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

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

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

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

答案 1 :(得分:2)

您可以使用sockets在程序之间进行通信。但是,如果您共享的数据始终与所有程序相关,那么正如其他人所建议的那样,中央数据库更适合。

或者,如果所有程序都是用Python编写的,则可以从不同threads的同一个解释器中启动它们。线程共享相同的内存空间,因此它们之间共享变量已经是内置的(只需确保以线程安全的方式读/写它们)。