[英]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_eval
( json
也可以)
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.