-2

Python 2.7 を使用して、サブプロセス スクリプトを実行するメイン スクリプトを作成しました。私の質問は、サブプロセスから特定の変数、たとえばベクトルをキャプチャする方法です。

vec_1, vec_2, vec_3

stdoutを使用して文字のマトリックスとしてスクリプトからを取得できることはわかっていますが、それはsubprocess.communicate()私の意図した目的には合いません。これが私がこれまでに試したことです。

親スクリプト:

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 を使用せずにサブプロセスを実行する方法を誰かが知っている場合のボーナス マーク。.bat ファイルを実行する必要があるため、シェルでのみ可能のようです。

編集

関数をメインスクリプトに直接インポートしない理由を明確にするために:

サブプロセスで実行されるプログラムである Abaqus には、独自の Python インターフェイスがあり、Python スクリプトを使用してデータ出力にアクセスできます。したがって、python スクリプトはプログラムを介して実行する必要があり、メインに統合することはできません。

4

2 に答える 2

0

あなたの興味のために、私がやりたかったことは不可能です. 単に子スクリプトを実行するだけの場合は、Anentropic が正しいでしょう。マルチプロセッシング モジュールの方が適しています。

私の質問は、Python インターフェイスを持つサード パーティのプログラムに関するものだったので、残念ながらそれは不可能です。

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

于 2015-11-14T16:34:08.850 に答える