import os
from threading import Thread, Timer
import time
lst = []
def my_timer(interval, file_path, file_timeout):
def wrapper(fun):
def inner(*args, **kwargs):
print("定时器")
if os.path.exists(file_path):
write_time = os.stat(file_path).st_mtime
print(f"文件最后写入时间{time.time() - write_time}")
if time.time() - write_time >= file_timeout:
return 1
# t = Thread(target=fun
# fun()
print(lst)
if lst:
t = lst[0]
else:
t = Thread(target=fun, args=args, kwargs=kwargs)
t.setDaemon(True)
lst.append(t)
t.start()
if t.is_alive():
print("程序还在运行")
t2 = Timer(interval, inner, args=args, kwargs=kwargs)
t2.start()
t2.join()
else:
print("程序运行完毕")
return 0
return inner
return wrapper
def tlimit(limit_time):
def outer(fun):
def wrapper(*args, **kwargs):
def raise_error():
print("程序运行超时")
return 2
print("限制函数时间功能")
timer = Timer(limit_time, raise_error)
task = Thread(target=fun, args=args, kwargs=kwargs)
task.setDaemon(True)
print("任务开始")
task.start()
timer.start()
while 1:
if not task.is_alive():
print("超时函数运行完毕!!!")
timer.cancel()
return
else:
print("超时函数仍在运行")
time.sleep(1)
return wrapper
return outer
start_time = time.time()
@tlimit(30)
@my_timer(3, r"test.txt", 3)
def hello():
for i in range(20):
# print(i)
time.sleep(1)
定时器和函数执行时间限制
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 前言: (不想看废话的可以直接copy尾部的代码) 在八月上旬的时候,曾经写过一个多线程爬虫。程序在运行时经...
- import timeimport functoolsDEFAULT_FMT = '[{elapsed:0.8f}...
- import timeimport functoolsdef clock(func):@functools.wra...