Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.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 3.x python3-exec(open(';…py';).read())-传输变量_Python 3.x_Variables_Exec_Transfer - Fatal编程技术网

Python 3.x python3-exec(open(';…py';).read())-传输变量

Python 3.x python3-exec(open(';…py';).read())-传输变量,python-3.x,variables,exec,transfer,Python 3.x,Variables,Exec,Transfer,现在我正在为一个问题咬牙切齿: 我希望Python中的另一个py(Master.py)能够多次空闲地启动/运行py(Slave.py-这非常复杂,并且已经完成),Slave.py总是完全重新启动。这意味着所有变量和导入等都会在每次启动时重新初始化。每次重新启动Slave.py时,都会显示不同的变量值​​应该从Master.py传输到Slave.py(背景是Slave.py需要1到12小时的运行时间,AI​​在参数更改的情况下,在多次运行中不会保持稳定。) 我在WIN10中使用Pythonidle

现在我正在为一个问题咬牙切齿:

我希望Python中的另一个py(Master.py)能够多次空闲地启动/运行py(Slave.py-这非常复杂,并且已经完成),Slave.py总是完全重新启动。这意味着所有变量和导入等都会在每次启动时重新初始化。每次重新启动Slave.py时,都会显示不同的变量值​​应该从Master.py传输到Slave.py(背景是Slave.py需要1到12小时的运行时间,AI​​在参数更改的情况下,在多次运行中不会保持稳定。) 我在WIN10中使用Pythonidle并使用Python3.8.3

找到至少在空闲状态下执行Slave.py的内容:

()

问题仍然是如何将变量从Master.py传输到Slave.py。我认为您可以在Master.py中编写,例如:

    global_vars = {"Wert1": "Ford", "Wert2": "Mustang", "Wert3": 1964}
    local_vars = {"Wert1": "VW", "Wert2": "Käfer", "Wert3": 1966}
    with open ("Slave.py") as f:
       code = compile (f.read (), "Slave.py", 'exec')
       exec (code, global_vars, local_vars)
我现在的问题是如何恢复变量值​​在Slave.py里?
感谢您的建议,如何具体编写。

您是否查看了
子流程
库?是的,我使用subprozess.popen进行了尝试。但这对我来说并不太好:slave.py不再真正运行,似乎仍然存在依赖关系。空闲状态下的打印输出与slave.py独立运行不同。使用open/exec时,Slave.py在每次空闲时启动,并且空闲时的打印输出相同。很好,Master.py只在Slave.py运行完成后才继续运行。一切都如我所愿。只有变量的传递不清楚。实际上,我只需要传递一个或两个随每次运行而变化的参数。
    global_vars = {"Wert1": "Ford", "Wert2": "Mustang", "Wert3": 1964}
    local_vars = {"Wert1": "VW", "Wert2": "Käfer", "Wert3": 1966}
    with open ("Slave.py") as f:
       code = compile (f.read (), "Slave.py", 'exec')
       exec (code, global_vars, local_vars)