• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell
您的位置:首页 > 脚本语言 >python > python使用装饰器和线程限制函数执行时间的方法

python使用装饰器和线程限制函数执行时间的方法

作者: 字体:[增加 减小] 来源:互联网

通过本文主要向大家介绍了python 多线程,python多线程编程,python 线程,python多线程实例,python 线程池等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

本文实例讲述了python使用装饰器和线程限制函数执行时间的方法。分享给大家供大家参考。具体分析如下:

很多时候函数内部包含了一些不可预知的事情,比如调用其它软件,从网络抓取信息,可能某个函数会卡在某个地方不动态,这段代码可以用来限制函数的执行时间,只需要在函数的上方添加一个装饰器,timelimited(2)就可以限定函数必须在2秒内执行完成,如果执行完成则返回函数正常的返回值,如果执行超时则会抛出错误信息。

# -*- coding: utf-8 -*-
from threading import Thread
import time
class TimeoutException(Exception):
  pass
ThreadStop = 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)
</div>

希望本文所述对大家的Python程序设计有所帮助。

</div>

您可能想查找下面的文章:

  • Python多线程实现同步的四种方式
  • Python多线程实现同步的四种方式
  • Python 多线程实例详解
  • Python 多线程实例详解
  • Python实现的多线程http压力测试代码
  • Python线程指南详细介绍
  • Python线程指南详细介绍
  • python实现多线程抓取知乎用户
  • python 线程的暂停, 恢复, 退出详解及实例
  • 深入理解 Python 中的多线程 新手必看

相关文章

  • Python中的__SLOTS__属性使用示例
  • python getopt详解及简单实例
  • Python应用03 使用PyQT制作视频播放器实例
  • Python中用函数作为返回值和实现闭包的教程
  • Python进行数据提取的方法总结
  • Python中内置的日志模块logging用法详解
  • python实现简单购物商城
  • 九步学会Python装饰器
  • python实现中文转换url编码的方法
  • 盘点提高 Python 代码效率的方法

文章分类

  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell

最近更新的内容

    • 跟老齐学Python之啰嗦的除法
    • 在类Unix系统上开始Python3编程入门
    • 使用Python编写一个在Linux下实现截图分享的脚本的教程
    • python网络编程学习笔记(二):socket建立网络客户端
    • Python上传package到Pypi(代码简单)
    • python文件写入实例分析
    • python中安装模块包版本冲突问题的解决
    • Python错误提示:[Errno 24] Too many open files的分析与解决
    • 在Django的视图中使用数据库查询的方法
    • Python中使用HTMLParser解析html实例

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有