利用具有超時功能的子進程模組
在程式設計中經常會出現子進程需要在預先定義的時間範圍內完成其執行的情況。雖然 subprocess 模組提供了強大的執行命令機制,但它本質上缺乏逾時功能。
為了解決此限制,Python 3.3 及以後在 subprocess 模組中提供了 check_output 函數。此函數不僅從命令中取得 stdout 數據,還會在進程超過指定逾時時引發異常。
from subprocess import STDOUT, check_output # Set the timeout in seconds timeout = 5 try: # Execute the command with the specified timeout output = check_output(cmd, stderr=STDOUT, timeout=timeout) except CalledProcessError as e: # Handle the error if the process fails with a non-zero exit status pass # Process the merged stdout/stderr data contained in the output variable
在此程式碼中,超時變數決定指令允許的最大執行時間。 check_output 確保進程在指定的時間範圍內終止並傳回組合的 stdout/stderr 輸出。
或者,對於 Python 2.x 用戶,子進程模組的 subprocess32 向後移植提供相同的功能。此向後移植提供了與 check_output 等效的解決方案,允許在 Python 2.x 下執行逾時感知命令。
以上是如何在 Python 中為子進程呼叫新增逾時?的詳細內容。更多資訊請關注PHP中文網其他相關文章!