2014-04-04 32 views
3

我想通過python運行一個長進程(calculix模擬)。Async在進程運行時使用python讀取控制檯輸出

如前所述here一個可以與communicate()讀取控制檯字符串。

據我瞭解,該過程完成後返回字符串?在進程運行時是否有可能獲得控制檯輸出?

+0

你的過程'calculix'在控制檯上模擬寫入數據,同時運行? – Nilesh

+0

是的,當然它寫入控制檯 – daniel

回答

1

你必須使用subprocess.Popen.poll檢查進程終止與否。

while sub_process.poll() is None: 
    output_line = sub_process.stdout.readline() 

這會給你運行時輸出。

1

這應該工作:

sp = subprocess.Popen([your args], stdout=subprocess.PIPE) 
while sp.poll() is None: # sp.poll() returns None while subprocess is running 
    output = sp.stdout # here you have acccess to the stdout while the process is running 
    # Do stuff with stdout 

通知我們不呼籲子在這裏交流()。

相關問題