Python:从父脚本中的子进程(子)脚本访问变量

Python: Accessing the variables from a Subprocess (Child) script, in the parent script

使用Python 2.7,我有一个执行子进程脚本的主脚本。 我的问题是如何从子进程中捕获某些变量,例如载体:

vec_1, vec_2, vec_3

我知道可以使用 subprocess.communicate() 从脚本中获取 stdout 作为字符矩阵,但这不符合我的预期目的。这是我到目前为止尝试过的方法。

父脚本:

import subprocess
if __name__ == "__main__":
    process = subprocess.Popen(["abaqus", "python", "childscript.py", \
        "file"], shell=True, stdout=subprocess.PIPE)
    process.wait()
    pr = process.communicate()  

子子进程:

def function(a):
    return vec_1, vec_2, vec_3

if __name__ == '__main__':
    function()

如果有人知道如何在不使用 shell=True 的情况下执行子流程,则加分。似乎只有 shell 才有可能,因为它涉及执行 .bat 文件。

编辑

澄清为什么我不直接将函数导入主脚本:

在子进程中执行的程序,Abaqus 有自己的 python 接口,它允许使用 python 脚本来访问它的数据输出。因此,python脚本应该运行通过程序,不能集成到主程序中。

可能适用于传递单个值的混乱方法......

import subprocess
if __name__ == "__main__":
    process = subprocess.Popen(["abaqus", "python", "child.py", \
        "file"], shell=True, stdout=subprocess.PIPE)
    process.wait()
    x= process.stdout.read()
    exec(x)
    print vec_1
    print vec_2

Child.py:

def function(a):
    vec_1=a*2
    vec_2=a*3     
    print("vec_1=" + str(vec_1))
    print("vec_2=" + str(vec_2)) 

if __name__ == '__main__':
    num=4        
    function(num)

为了您的利益,我想做的事情是不可能的。如果这只是一个执行子脚本的情况,那么 Anentropic 是正确的——多处理模块是更好的方法。

由于我的问题是关于具有 python 接口的第 3 方程序,不幸的是这是不可能的。

参考:https://www.researchgate.net/post/How_can_I_access_the_ABAQUS_python_API_from_outside_ABAQUS_cae