python限制语句执行时间过长
Window或linux1.eventletpip install eventlet刚开始在ubuntu上使用此命令无法安装成功,我试过多次。后来在github上进行操作查找到https://github.com/eventlet/eventletsudo pip install -U eventlet在另一台ubuntu系统的机器上很快就安装成功了,在docker中也能安...
Window或linux
1.eventlet
pip install eventlet
刚开始在ubuntu上使用此命令无法安装成功,我试过多次。
后来在github上进行操作查找到https://github.com/eventlet/eventlet
sudo pip install -U eventlet在另一台ubuntu系统的机器上很快就安装成功了,在docker中也能安装成功。
import eventlet
import time
eventlet.monkey_patch()
with eventlet.Timeout(2,False):
print(1)
time.sleep(1.5)
print(2)
time.sleep(1)
print(3)
print(4)
#结果为:
# 1
# 2
# 4
使用参考链接:
https://blog.csdn.net/zjshui/article/details/78874621
https://blog.csdn.net/weixin_33875839/article/details/87163082
https://blog.csdn.net/youyou1543724847/article/details/71404145
Linux
2.signal
通过signal模块信号机制来控制语句执行时间,不能常用在windows下,常使用在linux下。
import time
import signal
def abc():
#最多执行时间为2s
print(1)
time.sleep(1.5)
print(2)
time.sleep(1)
print(3)
#超时的回调函数
def myHandler(signum, frame):
print("执行超时")
exit()
signal.signal(signal.SIGALRM, myHandler)
#定时2秒,超时则执行回调函数
signal.alarm(2)
abc()
print(4)
#结果为:
#1
#2
#执行超时
上面的是程序整体执行时间控制,所以超时后不论语句在哪都不会执行
参考链接:
https://blog.csdn.net/weixin_33875839/article/details/87163082
https://blog.csdn.net/imnisen1992/article/details/53192389
https://blog.csdn.net/jinixin/article/details/80383177?utm_source=blogxgwz4
https://www.jianshu.com/p/c8edab99173d
https://blog.csdn.net/zelinhehe/article/details/77529844
3.timeout-decorator
pip install time-decorator
装饰器使用,超时即报错,可以捕捉异常处理,但也基于信号机制,不能常用在windows下,常使用在linux下。
import time
import timeout_decorator
@timeout_decorator.timeout(2)
def abc():
#最多执行时间为2s
print(1)
time.sleep(1.5)
print(2)
time.sleep(1)
print(3)
try:
abc()
except:
pass
print(4)
#结果为:
#1
#2
#4
参考链接:
https://blog.csdn.net/weixin_33875839/article/details/87163082
https://www.jianshu.com/p/a7fc98c7af4d
https://www.cnblogs.com/fengmk2/archive/2008/08/30/python_tips_timeout_decorator.html
更多推荐
所有评论(0)