python限制函數的執行時間

import signal

class TimeoutException(Exception):
    pass

def timeout_handler(signum, frame):
    raise TimeoutException()

def limit_time(seconds=10):
    def decorator(func):
        def wrapper(*args, **kwargs):
            signal.signal(signal.SIGALRM, timeout_handler)
            signal.alarm(seconds)
            try:
                result = func(*args, **kwargs)
            except TimeoutException:
                return None
            finally:
                signal.alarm(0)
            return result
        return wrapper
    return decorator

運行

@limit_time(seconds=5)
def my_function():
    # 在這裏編寫需要限制執行時間的代碼
    pass

result = my_function()
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章