在其他正在运行的模块中调用函数(并传递变量)来更改那里的变量

问题描述 投票:0回答:1

作为初学者,很难用一句话来表达问题。但问题是:我有两个模块彼此相邻运行(使用 subprocess.Popen)。我想将 module1 中的 var 传递给 module2 中的函数。该函数仅在 module2 中更改一组全局变量。导入似乎不起作用,因为两个模块都在自己的主循环中运行。 (这似乎阻止了导入过程。) 任何提示。 谢谢,彼得

模块1.py

x=0
y=0

def changePar(v):
    global x, y
    x += v
    y += v

While True:
    #do something
    print(x,y) #hopefully the changed values

模块2.py

From Module1 import changePar
m1 = 5

Module1.changePar(m1)
    
While True:
    #do something
python function import subprocess python-module
1个回答
0
投票

我怎样才能做到这一点,让第三个模块使用“管道”?

第三个模块:

from subprocess import Popen, PIPE
M1 = Popen(['python3', 'Module1.py'], stdin =PIPE)
M2 = Popen(['python3', 'Module2.py'], stdout=PIPE)
M1.stdin.write(M2.stdout.readline())
M1.stdin.flush()

模块1.py:

import os, sys
x=0
y=0

def changePar(v):
    global x, y
    x += v
    y += v

os.set_blocking(sys.stdin.fileno(), False)
while True:
    #do something
    l = sys.stdin.readline()
    if l: changePar(int(l))
    print(x, y) # hopefully the changed values

模块2.py:

m1 = 5
print(m1, flush=True)
© www.soinside.com 2019 - 2024. All rights reserved.