导入后,一个全局 VAR,在 1 个模块中包含两个值

one global var with two values within 1 module after import

提问人:Plem 提问时间:11/10/2023 最后编辑:JonSGPlem 更新时间:11/10/2023 访问量:25

问:

我有这个多进程的多负载模块。打开另外两个模块。Module1 必须调用 module2 中的函数并更改(对于 module2 全局)var。但是在那次调用之后,module2 中存在该 var 的两个不同值。这个初学者很困惑......(-;

## module multiload.py

from subprocess import Popen
from time import sleep

t=1
Popen(['python3', 'module2.py'])
sleep(t)
Popen(['python3', 'module1.py'])
sleep(t)
## module module1.py

import time
print("to load")
import module2
print("loaded")

i=0
while True:
    module2.changeVar(i)
    print("module1",i)
    print("module2.PLvar",module2.PLvar)
    i+=1
    time.sleep(3)
## module module2.py

import time

PLvar = 6

def changeVar(v):
    global PLvar
    PLvar = v
    print("changeVar m2",PLvar)  # this PLvar is changing with the loop in module1

def main():
    while True:
        global PLvar
        print ("while m2",PLvar) # this PLvar is stuck at 6 (as assigned in line 3)
        time.sleep(3)

print("module2",__name__)
if (__name__=="__main__"):
    print("module 2 main started")
    main()
python 函数 导入 子进程 调用

评论

0赞 Daviid 11/10/2023
无需将所有内容都放在一个块代码中,您可以放置 3 个块代码并在 fornt od 中使用文件名作为标题。#
0赞 JonSG 11/10/2023
您正在运行两个单独的 python 实例,每个实例都将读取 使用 的基本定义。您可能希望查看该模块,以读取和写入可能由 python 的单独执行加载/写入的数据。或者,您可以查看包,了解在同一个 python 上下文中执行两个代码路径的方法,并使用可能受保护的全局变量来共享上下文。module2.pypicklemultiprocessinglock()

答: 暂无答案