`
blithewu
  • 浏览: 11726 次
  • 性别: Icon_minigender_1
  • 来自: 浙江
社区版块
存档分类
最新评论

python中判断一个运行时间过长的函数

阅读更多
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)
分享到:
评论

相关推荐

    2019千峰Python超详细入门教程(百度云盘分享).docx

    ├─千锋Python教程:第01章 第一个Python程序与数据存储及数据类型(9集) │ │ .DS_Store │ │ │ ├─code │ │ 1、数据存储.txt │ │ 2、第一个python程序.py │ │ 3、注释.py │ │ 4、输出与输入.py │ ...

    python程序运行进程、使用时间、剩余时间显示功能的实现代码

    有很多程序运行时间比较长,如果不将运行过程输出将很难判断程序运行的时间。下边这段程序将按照上图所示的格式输出程序运行进程、已用时间、剩余时间。 def time_change(time_init): #定义将秒转换为时分秒格式的...

    python cookbook(第3版)

    15.3 一个操作数组的扩展函数 15.4 在C扩展模块中操作隐形指针 15.5 从扩张模块中定义和导出C的API 15.6 从C语言中调用Python代码 15.7 从C扩展中释放全局锁 15.8 C和Python中的线程混用 15.9 用WSIG包装C...

    生日快乐完整代码使用Python语言编写

    在主程序中,我们首先获取当前时间,然后判断是否已经是生日。如果是生日,就获取用户输入的名字,并调用birthday_wish函数输出祝福语;如果不是生日,就输出一条等待提示。 当然,我们可以继续扩展这个代码,让它...

    python 定时器每天就执行一次的实现代码

    编写python脚本一直运行,判断当下是否是新的一天,如果是就执行一次任务代码 2.具体实现代码 #-*-coding:utf-8 -*- __author__ = 'Administrator' import os,threading,time curTime=time.strftime(%Y-%M-%D,time....

    基于PySide6框架+python的智能充电桩调度计费系统前端源码+项目说明文档.zip

    Qt 以阻塞的方式调用 Python 函数,所以直接在函数中执行网络IO是不可行的(等待响应的过程用户界面会失去响应),所以这里使用 qasync 模块兼容了 Python 的异步框架 asyncio。通过这种方法,所有阻塞操作全部可以...

    leetcode题库-pyshua:这是一个Python的编码判断系统

    每一个题库对应problems路径下的一个文件夹,每一个题目对应相应题库下的一个Python文件。每一个题目都要至少实现以下四个函数: solve verify input output 具体可参考problems/leetcode下我已经写好的那些题目。 ...

    Python第七章-用户输入和while循环.pdf

    大多数程序都旨在解决最终用户的问题, 为此通常需要从用户那里获取一些信息。 例如, 假设有人要判断自己是否到了投票的年龄, 要编写回答这个... 通过获取用户输入并学会控制程序的运行时间, 可编写出交互式程序。

    python期末:学生成绩管理系统(Tkinter)

    (1)学生成绩信息包括学号、姓名、性别、三科成绩(Python语言程序设计、数据库原理、计算机网络)、出生时间、年龄(通过计算得到)。 (2)将学生成绩数据保存到文件中,所有操作都针对文件中的数据。 (3)程序算法说明...

    Python删除指定目录下过期文件的2个脚本分享

    这两天用python写了一个删除指定目录下过期时间的脚本。也可能是我初学python,对python还不够熟习,总觉得这个脚本用shell写应该更简单也更容易些。就功能上来说,该脚本已经实现了我想要的效果,不过该脚本还不够...

    机器学习课设基于python实现决策树对天气降雪进行预测判断源码(带界面和数据)+项目使用说明.zip

    机器学习课设基于python实现决策树对天气降雪进行预测判断源码(带界面和数据)+项目使用说明.zip 【资源介绍】 该项目是个人毕设项目,答辩评审分达到95分,代码都经过调试测试,确保可以运行!欢迎下载使用,可用于...

    Python微信操控itchat的方法

    itchat是一个开源的微信个人号接口,使用python调用微信从未如此简单。 开源地址 https://github.com/littlecodersh/ItChat 文档: https://itchat.readthedocs.io/zh/latest/ 安装: pip3 install itchat 登入与...

    人工智能实验报告.pdf

    5.4 实验结果与分析 实验分析: KNN 算法可以说是使用蛮力进行分类, 每进行一个测试样本的判断, 都 要对所以的训练集操作一次, 时间复杂度和空间复杂度都会随着训练集和测 试集的数量而增加。而逻辑回归只对测试...

    使用python代码进行身份证号校验的实现示例

    代码是老师放了一个提取出生年月日的题目扩展过来的,目前来看代码运行正常,有没有bug就不造了。 身份证号校验规则 话说身份证号校验,最重要的肯定是校验。那么如何校验?如何又有15、18位身份证号之分? 1、1999...

    自动化测试面试题总结.docx

    6,如果一个元素无法定位,一般会考虑哪些原因 7,driver.close()和driver.quit()的区别 8,自动化脚本断言 9,判断页面元素是否存在 10,js在web自动化中的作用展示 11,自动化代码优化 12,selenium对比RF 13,自动...

    tengge py for s60编程教程

    1.2编写一个记事本程序 1.3输入框 1.4加载模块和定义函数 1.5菜单的创建 1.6列表界面 1.7打电话.发短信和彩信 1.8重启和关机 1.9画布界面 2.0制作一个音乐播放器 2.1系统进度条的调用 2.2选择列表和复选框 2.3线程的...

    PHP基础教程 是一个比较有价值的PHP新手教程!

    通过我们已经学过的知识,你可以编写一个最简单的程序输出一个也许是程序世界中最有名的词语: echo "Hello World!"; ?> First PHP page // Single line C++ style comment /* printing the message */ ...

    文章管理系统

    1.关键字管理的地址栏加入自动换行,防止网址过长造成右侧会没显示 2.列表页导航分页加入超过100分页时,下拉选择自动变成文本框输入,防止下拉项太多而影响速度 3.纠正文章管理因异常栏目信息,而造成页面错误 4....

    freemarker总结

    上面的语法格式中,sequence就是一个集合对象,也可以是一个表达式,但该表达式将返回一个集合对象,而item是一个任意的名字,就是被迭代输出的集合元素.此外,迭代集合对象时,还包含两个特殊的循环变量: item_index:...

Global site tag (gtag.js) - Google Analytics