研究了大半天,爲了獲取持續輸出的shell指令結果,並對結果進行分析,一直由於沒法控制subprocess開啓的子進程頭疼,研究了半天,參考衆多大神的博客後,終於實現,目前已時間爲控制點,在實際業務中,能夠經過判斷業務執行是否完成來達到中止subprocess子進程的目的。shell
1 #程序執行終止時間爲當前時刻延遲15秒 2 stoptime = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()+10)) 3 def run_adbshell(): 4 p = subprocess.Popen(command,stdout=subprocess.PIPE,stderr=subprocess.PIPE,shell=True) 5 while True: 6 line=p.stdout.readline().strip() 7 print(line) 8 #當前時間 9 curtime = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time())) 10 if curtime>=stoptime: 11 #終止子進程 12 p.terminate() 13 #等待子進程終止後跳出while循環 14 if subprocess.Popen.poll(p) is not None: 15 break 16 else: 17 print(u'等待subprocess子進程終止。') 18 print(u'完成')