📜  python 在特定时间后终止程序 - Python (1)

📅  最后修改于: 2023-12-03 15:19:08.400000             🧑  作者: Mango

Python 在特定时间后终止程序

有时候,在Python程序中需要在特定的时间限制内运行程序,则需要在特定时间后停止程序。在本文中,我们将介绍如何在Python中设置程序在特定时间后自动停止。

使用signal库实现程序终止

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."并退出程序。

使用time库实现程序终止

除了使用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."并退出程序。