python通过装饰器和线程限制函数的执行时间(转)
来源:互联网 发布:Mac玩钢铁雄心4 编辑:程序博客网 时间:2024/06/17 01:42
很多时候函数内部包含了一些不可预知的事情,比如调用其它软件,从网络抓取信息,可能某个函数会卡在某个地方不动态,这段代码可以用来限制函数的执行时间,只需要在函数的上方添加一个装饰器,timelimited(2)就可以限定函数必须在2秒内执行完成,如果执行完成则返回函数正常的返回值,如果执行超时则会抛出错误信息。
代码参考:http://augustwu.iteye.com/
代码块
# -*- coding: utf-8 -*-from threading import Threadimport timeclass TimeoutException(Exception): passThreadStop = Thread._Thread__stop#获取私有函数def timelimited(timeout): def decorator(function): def decorator2(*args,**kwargs): class TimeLimited(Thread): def __init__(self,_error= None,): Thread.__init__(self) self._error = _error def run(self): try: self.result = function(*args,**kwargs) except Exception,e: self._error =e def _stop(self): if self.isAlive(): ThreadStop(self) t = TimeLimited() t.start() t.join(timeout) if isinstance(t._error,TimeoutException): t._stop() raise TimeoutException('timeout for %s' % (repr(function))) if t.isAlive(): t._stop() raise TimeoutException('timeout for %s' % (repr(function))) if t._error is None: return t.result return decorator2 return decorator@timelimited(2)def fn_1(secs): time.sleep(secs) return 'Finished'if __name__ == "__main__": print fn_1(4)#该代码片段来自于: http://www.sharejs.com/codes/python/8361
转自:http://www.sharejs.com/codes/python/8361
0 0
- python通过装饰器和线程限制函数的执行时间(转)
- Python: 使用装饰器“@”取得函数执行时间
- 利用装饰器给python的函数加上类型限制
- python 写一个计算执行时间的装饰器
- python 限制函数执行时间,自己实现 timeout
- Python限制函数运行时间,记录函数运行时间的装饰器
- python的装饰器和find函数的使用
- python装饰器后的函数名和文档变化
- python装饰器的4中类型:函数装饰函数、函数装饰类、类装饰函数、类装饰类
- Python中的装饰器和函数式
- python闭包函数和装饰器
- 理解Python 返回函数和装饰器
- PYTHON 函数装饰器
- python 函数装饰器
- Python函数:装饰器
- Python 函数装饰器
- python函数装饰器
- python函数装饰器
- listview点击某项修改背景颜色和子控件点击删除某一项
- Java语言基础(关键字、标识符、注释、常量、变量、运算符)
- hdfs安装和配置过程以及hadfs的工作原理(备忘)
- AngularJS入门
- SSH结合EasyUI的分页操作(数据的增删改查)
- python通过装饰器和线程限制函数的执行时间(转)
- CSS高级
- 北创营一行的一些思考
- CentOS7装mongodb3.2.8
- 实例学习ansible系列(12)常用模块之docker
- Django基础内容总结
- STM32之DAC
- 选择系统相册或拍照显示图片到ImageView
- Java——static修饰符、final修饰符、abstract修饰符、接口