`
blithewu
  • 浏览: 12026 次
  • 性别: 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)
分享到:
评论

相关推荐

    python实现在每个独立进程中运行一个函数的方法

    此外,该方法的使用场景包括需要释放内存资源时,或者当要执行的任务需要长时间运行,而希望其运行在后台进程中,主程序则可以继续处理其他任务而不受影响。这在提高程序的运行效率和响应速度方面具有重要的意义。

    汉字判断Python+PyQt5

    为了实现汉字判断的功能,开发者可能在`judgeHZ.py`中定义了一个函数,如`is_han_zi`,这个函数接收一个字符或字符串作为参数,然后通过上述方法检查每个字符是否为汉字。如果是,返回True,否则返回False。然后在`...

    Python-Wily一个Python的程序用于跟踪报告测试中的用时和复杂性

    1. **性能优化**:当发现某个测试用例运行时间过长时,可以使用Wily定位到具体代码段进行优化。 2. **代码重构决策**:通过Wily的复杂性报告,开发者可以判断哪些代码可能需要重构以提高可读性和可维护性。 3. **...

    Python中特殊函数集锦

    在这个示例中,`timeit`装饰器用于计算函数运行时间。通过在函数`foo`前使用`@timeit`,我们可以在调用`foo()`的同时自动打印出其运行所需的时间。 #### 4. 匿名函数`lambda` `lambda`函数允许快速定义简单的、不...

    python每隔N秒运行指定函数的方法

    最后,__name__ == "__main__"是Python中的一个常用判断语句,用于判断当前脚本是被直接运行还是被导入其他模块中。如果是直接运行,__name__的值会被设置为"__main__"。在这个例子中,当直接运行该Python脚本时,会...

    Python-一个采用Python开发的简单缓存服务器

    标题中的"Python-一个采用Python开发的简单缓存服务器"揭示了我们将探讨如何使用Python构建这样一个系统。 缓存服务器是提高应用性能的关键技术之一,它通过存储常用数据或计算结果,减少对原始数据源(如数据库或...

    老男孩 Python 自动化开发 03 Python模块化编程 函数式编程 三元编程 lambda 装饰器 共17页.pptx

    `__init__.py` 文件在Python中用于标识一个目录为包,使得我们可以像导入模块一样导入整个目录。通过检查`__name__`变量,可以判断当前脚本是否作为主文件执行,常用于条件执行代码,例如测试或脚本运行。`__file__`...

    Python34中文手册(官方文档).docx

    - **简介**:Python解释器提供了一个交互式环境,允许用户直接输入代码并立即看到结果。 - **使用场景**:适合测试小段代码或者快速实验。 - **退出交互模式**:输入`exit()`或使用快捷键Ctrl+D。 #### 四、解释器...

    Python-对密文的加密类型进行判断的命令行工具

    总的来说,这个Python命令行工具提供了一种自动化的方式来识别加密数据的类型,这对于信息安全专业人士来说是一个有价值的工具,可以节省他们在处理未知加密数据时的时间和精力。通过学习和理解其背后的实现原理,...

    基于python判断字符串括号是否闭合{}[]()

    在Python语言中,有多种方法可以判断一个字符串中的括号是否正确匹配。本文将介绍一种基于Python的方法,该方法利用栈的数据结构来判断括号是否闭合。 括号匹配的基本问题在于确认字符串中的每一个左括号都能找到...

    python获取指定日期范围内的每一天,每个月,每季度的方法

    接着,需要编写一个`getBetweenQuarter`函数,该函数在每个月份列表的基础上,判断月份所属的季度,并将其添加到季度列表中。每个季度的划分以三个月为一个季度,分别对应Q1、Q2、Q3和Q4。具体实现如下: ```python...

    python自动办公-14 用Python按时间分割txt文件中的数据

    此外,还可以将这个功能封装成一个可复用的类或函数,方便在不同的项目中使用。 通过掌握以上知识,你可以轻松地用Python实现按时间分割txt文件中的数据,提升你的自动办公效率。这个技能对于处理大量时间序列数据...

    Python-cachey基于缓存的时间和存储空间计算

    Python-cachey是一个高效且灵活的缓存库,主要用于优化计算过程中的时间和存储效率。它设计的目的是在Python程序中实现快速的缓存机制,从而避免重复计算,提高程序性能。cachey库的核心思想是利用哈希函数来确定...

    使用pygame在python中的一个简单游戏_python_代码_下载

    标题“使用pygame在python中的一个简单游戏”表明我们将讨论如何使用Pygame库来构建一个基本的游戏。 Pygame的核心概念包括窗口管理、事件处理、图形绘制、音频播放等。首先,要使用Pygame,你需要安装这个库,可以...

    python3.4.3入门指南

    标准模块提供了许多Python自带的常用功能,dir()函数可以列出一个模块中定义的名称。包是一种组织模块的方式,通常是一组拥有共同前缀的模块名。 输入和输出涉及程序与外部世界的交互。Python提供了格式化输出的...

    Python3官方手册中文版

    - **“编译的”Python文件**: 当模块第一次被加载时,Python会创建一个`.pyc`文件,以提高下次加载的速度。 ##### 6.2 标准模块 - Python拥有丰富的标准库,包括各种实用工具和功能模块。 ##### 6.3 dir()函数 -...

    Python中按键来获取指定的值

    然而,在实际操作过程中经常会遇到这样的情况:当我们尝试访问一个不存在的键时,程序会抛出`KeyError`异常,这可能导致整个程序中断。为了避免这种情况发生,我们需要采取一些措施来确保程序能够稳健运行。接下来,...

    廖雪峰python教程打印版(完整版)(.pdf)

    Python有一个强大的标准库,并且支持第三方模块的安装,使得Python的功能非常强大和灵活。使用模块可以避免代码重复,并且可以轻松地将代码组织成不同部分。第三方模块可以通过各种包管理工具,如pip进行安装和管理...

Global site tag (gtag.js) - Google Analytics