簡體   English   中英

subprocess.Popen,從子進程獲取變量(子進程)

[英]subprocess.Popen, get variable from subprocess (child)

我想知道我如何處理它,我得到一個從子進程到父進程的變量/值。

我正在將子進程作為腳本運行。 父母看起來像:

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反序列ast.literal_evaljson也可以)

Callee( getData.py模型):

if __name__ == "__main__":
    print([1,2,3,4])  # mock output

呼叫者:

import subprocess,ast
output = subprocess.check_output('abaqus python getData.py', shell=True)
lst = ast.literal_eval(output.decode("ascii"))

現在lst包含[1,2,3,4]

如果您的輸出數據更復雜(列表,詞典列表......),只需撰寫列表列表,內嵌嵌套詞典的詞典,...並打印出來。 ast.literal_eval能夠在另一ast.literal_eval建相同的結構。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM