让我们想象一下我在python中有一个程序( first.py ):
GLOBALVAR = "pineapple"
def changeVAR(newValue):
global GLOBALVAR
GLOBALVAR = newValue
while(True):
print GLOBALVAR
,我想在第一个正在运行时使用另一个Python程序来庆祝全局变量 globalvar 。例如( second.py ):
from second import changeVAR
#do something
first.changeVAR("banana")
可以做这样的事情吗?意思是,使用另一个程序更改运行程序的全局变量?
预先感谢您!
您所描述的内容(共享相同变量的程序)仅在不同的线程(共享相同的python解释器和数据)之间,而不是在不同的过程之间。
现代操作系统不允许程序访问另一个程序的内存。因此,您不能仅仅进入另一个过程的记忆并在那里更改某些内容。允许这会造成各种错误和安全问题。
可以使用Cranscess Communication与另一个程序进行通信。这可以通过例如插座,内存映射的文件或写入彼此的标准内和输出。还支持信号量,共享的备忘录和类似Unix的操作系统的消息队列。
multiprocessing
模块提供Queue
和Pipe
对象,以允许相关处理的处理以相互交谈。
我正在使用的解决方法。是在某个地方创建一个空文件。然后是一个prog。可以从此文件中读取(例如每2秒左右),如果它是空的,那就什么也不做。如果需要,另一个可以写入此文件。写入后,另一个程序将读取文件中的书面数据,将其用作新的var。然后清除文件,准备进行新的读取。我正在从文件中读取的服务器上使用此信息,然后从可以将"命令"(将其发送到语音控制照明)的另一个程序中,然后打开/关灯等!
是的,但这是一个动态更改,因此,如果您以后再次静态加载模块,则更改将不会持续。但是,每当您在更改后使用该模块时,它都会粘贴。
您甚至可以简单地调用first.GLOBALVAR = 'banana'
即可达到相同的结果。