2012-08-02 42 views
3

我凌乱的解决方案:做一个变量访问所有正在运行的程序

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

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

我的一个简单的解决方案要求:

即使上述方案运作良好,我试图找到Python程序之间共享变量更优雅的方式。你能告诉我是否有更好的方法在Python中做到这一点?

非常感谢。

+6

你考虑过数据库吗? – geoffspear 2012-08-02 12:23:19

+0

但txt文件真的更好,如果变量只有一个:)或基于文件的数据库 - sqlite,h2 – dmitry 2012-08-02 12:27:16

+4

为什么你会想要这个?如果一组程序在运行时都需要相同的信息并需要相互交谈,为什么它们不是同一程序中的类/函数?也许如果你告诉我们为什么你需要这个功能,我们可以给出一个更合理的解决方案。 – mgilson 2012-08-02 12:29:11

回答

4

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

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

我能想到的所有其他直接共享选项直接归入数据库(无论是否SQL)的类别,除了使用平面文件,这正是您现在正在执行的操作。

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

+0

谢谢我会发现更多关于这些模块。 Redis似乎很酷,我认为这会节省很多时间:) – 2012-08-02 12:35:20

2

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

或者,如果所有程序都是用Python编写的,则可以使用不同的threads上的相同解释器启动它们。线程共享相同的内存空间,以便在它们之间共享变量已经内置(只要确保以线程安全的方式读取/写入它们)。

相关问题