python3 subprocess模塊


當我們在執行python程序的時候想要執行系統shell可以使用subprocess,這時可以新起一個進程來執行系統的shell命令,python3常用的有subprocess.run()和subprocess.Popen,兩者的區別是前者是調用的后者,相當於是subprocess.run是subprocess.Popen的又一層封裝,前者必須要等待子進程運行結束才會返回,python主進程會被阻塞,而后者已運行則立即返回對象,不用等待子進程運行結束,也可以使用wait()方法等待子進程運行結束,后期可以使用返回的對象調用子進程運行的結果。

###base.py:

import time
time.sleep(2)
print('hello')

##main.py

import subprocess
p=subprocess.run(['python','base.py'],stdout=subprocess.PIPE)
data=p.stdout
print(str(data,encoding='gbk'))
print('end')

################################################################
res_obj=[]
for i in range(3):
p=subprocess.Popen(['python','base.py'],stdout=subprocess.PIPE)
# data=p.communicate() #如果啟用此相會阻塞主程序
# p.wait() #等待子程序運行完畢
# print(data)

res_obj.append(p) #將返回的對象加入到列表,后期通過此對象調用子程序執行結果
print('程序后台運行中')

for i in res_obj:
print(i.communicate()) #獲取子程序執行結果

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM