我正在使用subprocess.Popen()執行命令。我想在執行剩餘的代碼之前等待該過程完成,但同時我想在運行子進程2分鐘後檢查生成的文件的狀態。如果文件的大小爲零,那麼我想停止該過程。目前我的代碼如下。有沒有更聰明的方法來做到這一點?運行子進程時檢查條件
def execute(command,outputfilename):
process = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
start_time=time.time()
Is_Working=False
while True:
process.poll()
if not Is_Working:
#allow 2 minutes for the process to create results
if process.returncode == None and (time.time()-start_time)//60>1:
Is_Working=True
if (os.stat(outputfilename)[6]==0):
process.kill()
return
if process.returncode != None:
break
output, errors=process.communicate()
這個問題似乎是題外話題,因爲它是關於審查一個工作代碼,這是主題在http://codereview.stackexchange.com – zmo
不相關:使用'是None'來比較'None',因爲它是一個單例,'=='可以被覆蓋,即使對於非'Non'對象也返回'True'。 – jfs