Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用另一个Python程序更改正在运行的Python程序的全局变量_Python_Global Variables - Fatal编程技术网

用另一个Python程序更改正在运行的Python程序的全局变量

用另一个Python程序更改正在运行的Python程序的全局变量,python,global-variables,Python,Global Variables,让我们想象一下,我有一个Python程序,像这样(first.py): 我想在第一个python程序运行时,用另一个python程序唱出全局变量GLOBALVAR。例如(second.py): 有可能这样做吗?也就是说,用另一个程序更改正在运行的程序的全局变量 提前谢谢你 是的,但这是一个动态更改,因此如果稍后再次静态加载模块,更改将不会持续。但是,在更改后,无论何时使用该模块,它都会保持不变 您甚至可以简单地调用first.GLOBALVAR='banana',以获得相同的结果。您所描述的(共

让我们想象一下,我有一个Python程序,像这样(first.py):

我想在第一个python程序运行时,用另一个python程序唱出全局变量GLOBALVAR。例如(second.py):

有可能这样做吗?也就是说,用另一个程序更改正在运行的程序的全局变量


提前谢谢你

是的,但这是一个动态更改,因此如果稍后再次静态加载模块,更改将不会持续。但是,在更改后,无论何时使用该模块,它都会保持不变

您甚至可以简单地调用
first.GLOBALVAR='banana'
,以获得相同的结果。

您所描述的(共享相同变量的程序)只能在不同的进程之间(共享相同的python解释器和数据),而不能在不同的进程之间

现代操作系统不允许一个程序访问另一个程序的内存。因此,你不能仅仅进入另一个过程的记忆,然后在那里改变一些东西。允许这样做会产生各种各样的漏洞和安全问题

可以使用进程间通信与另一个程序通信。这可以通过例如,或写入彼此的标准输入和输出来完成。还支持在类似UNIX的操作系统上运行


多处理
模块提供了对象,以允许相关的已处理对象相互对话。

我正在使用的解决方法。就是在某处创建一个空文件。
然后是一个程序。如果该文件为空,则无法读取该文件(例如每2秒左右),然后不执行任何操作。如果需要,另一个可以写入这个文件。写入后,另一个程序将从文件中读取写入的数据,将其用作新变量,然后清除文件,准备进行新的读取。我在读取文件的服务器上使用它,然后从另一个程序我可以向服务器发送“命令”(使用它来语音控制照明),打开/关闭灯等等

导入模块不会连接到另一个正在运行的程序,这似乎是塔利斯想要做的。我完全同意这一点,只是想解释一下发生了什么。你的回答很有帮助。
GLOBALVAR = "pineapple"

def changeVAR(newValue):
     global GLOBALVAR
     GLOBALVAR = newValue

while(True):
   print GLOBALVAR
from second import changeVAR

#do something
first.changeVAR("banana")