Python:在最大化时间常数时抛出错误

时间:2013-09-17 18:49:32

标签: python profiling

我已经看过关于使用Timer的这篇文章:

Accurate timing of functions in python

虽然它确实有时间进行已知的操作......我需要稍微不同的东西。

我想:

  1. 执行功能+启动计时器
  2. 允许运行功能
  3. 如果功能完成< X毫秒:没有错误
  4. 如果功能完成> = X毫秒:错误"预期时间常数超过"

2 个答案:

答案 0 :(得分:2)

您可以将请求几乎直接转换为代码 - 只需添加“if”语句,然后抛出异常:

import timeit

def test(operation, setup, threshold):
    # Add any kind of timing setup here.
    t = timeit.Timer(operation, setup=setup)

    # Note: t.timeit(number=1) returns the time in seconds, not milliseconds
    if t.timeit() > threshold:
        raise Exception("ERROR: expected time constant exceeded")

答案 1 :(得分:0)

要抛出错误,请使用:

raise Exception("my message")

(适用于Python 2.7,我不确定3)

所以在你的功能中:

if time >= expected: raise Exception("took too long!")

您也可以拥有自己的错误类:

class TooLongError(Exception):
    def __init__(self, value):
        self.value = value
    def __str__(self):
        return repr(self.value)

raise TooLongError("took too long")

产地:

  

TooLongError:花了太长时间