📅  最后修改于: 2023-12-03 15:19:08.400000             🧑  作者: Mango
有时候,在Python程序中需要在特定的时间限制内运行程序,则需要在特定时间后停止程序。在本文中,我们将介绍如何在Python中设置程序在特定时间后自动停止。
Python内置了一个signal库,它可以让我们在程序运行期间拦截信号,并在接收到信号时执行自定义逻辑。通过该库,我们可以在程序中设置捕获SIGINT和SIGTERM信号,进而实现程序终止的功能。
import signal
import time
timeout = 10 # 设置程序执行时间为10秒
def handler(signum, frame):
# 捕获SIGINT和SIGTERM信号,程序将会在接收到信号时执行该方法
print("Time is up.")
raise SystemExit
signal.signal(signal.SIGINT, handler)
signal.signal(signal.SIGTERM, handler)
# 模拟程序执行
while True:
print("Program is still running...")
time.sleep(1)
上述代码中,我们首先通过signal.signal()方法设置程序捕获SIGINT和SIGTERM信号时的处理方法,然后通过while循环模拟程序的执行过程。
程序运行期间,如果在10秒内没有接收到SIGINT或SIGTERM信号,则程序将持续运行;如果接收到信号,则程序将执行handler()方法中的逻辑,即输出"Time is up."并退出程序。
除了使用signal库以外,我们还可以通过time库来实现程序在特定时间后自动停止。
import time
import sys
timeout = 10 # 设置程序执行时间为10秒
start_time = time.time()
# 模拟程序执行
while True:
print("Program is still running...")
time.sleep(1)
if time.time() - start_time > timeout:
# 如果程序执行时间超过了10秒,则退出程序
print("Time is up.")
sys.exit()
上述代码中,我们记录了程序的开始时间start_time,并在循环中判断当前时间是否超过了设定的timeout时间。如果超过,则输出"Time is up."并退出程序。