我想知道如何处理它,我从子进程到父进程获取变量/值。
我正在将子进程作为脚本运行。父级看起来像:
import subprocess
p = subprocess.Popen('abaqus python getData.py', shell=True)
p_status = p.wait()
print b
孩子长得像:
from numpy import *
if __name__ == "__main__":
b = [0,1,2,3] # output is a list of integers
global a = b
我对 python 完全陌生。我认为问题是,我不能以这种方式存储变量并使它们“公开”给父级?我是否必须将它们写在 *.txt 或类似的内容中并使用 numpy.loadtxt() 获取它们?
即使子进程是一个Python进程,你也不能使用全局变量在它们之间进行通信。
您不能使用multiprocessing.Manager
对象要么因为你需要2个不同的Python引擎(具有单独的功能)。
经典(且简单)的方法是使用简单的方法序列化数据print
(因为输出中有一个整数列表),并使用反序列化ast.literal_eval
(json
也是可以的)
Callee (getData.py
小样):
if __name__ == "__main__":
print([1,2,3,4]) # mock output
Caller:
import subprocess,ast
output = subprocess.check_output('abaqus python getData.py', shell=True)
lst = ast.literal_eval(output.decode("ascii"))
now lst
包含[1,2,3,4]
如果您的输出数据更复杂(列表列表、字典...),只需组成列表列表、内部嵌套字典的字典...并打印它。ast.literal_eval
能够在另一侧重建相同的结构。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)