在Python中获取执行时间函数

2024-09-29 21:50:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我创建这个工作函数是为了获得另一个函数的时间:

def get_execution_time(function, args, numberOfExecTime=1):
    """Return the execution time of a function in seconds.

    """

    return round(Timer(partial(function, args)).timeit(numberOfExecTime), 5)

顺便说一下,我有一个问题:我不能给要计时的函数提供多个输入(arg)。 我怎么能做到呢?局部是正确的工具吗?在

我试过decorator,但是我不能存储我做一些统计所需的时间。在


Tags: ofthe函数ingetreturntimedef
3条回答

我会用定时装饰器。在

import time

def timeit(f):

    def timed(*args, **kw):

        ts = time.time()
        result = f(*args, **kw)
        te = time.time()

        print 'func:%r args:[%r, %r] took: %2.4f sec' % \
          (f.__name__, args, kw, te-ts)
        return result

    return timed

使用decorator很容易使用注释。在

^{pr2}$

或者重新命名要计时的函数。在

compute_magic = timeit(compute_magic)

我在这里的博客有更多的信息。http://blog.mattalcock.com/2013/2/24/timing-python-code/

可以传递多个参数:args应该是包含要传递的参数的元组。在

现在,您可以传递*args,而不是args。在

(如果您还需要将kwargs传递给您的方法,那么在get_execution_time中有另一个参数kwargs,并将**kwargs传递给您的function

def get_execution_time(function, args=(), kwargs ={}, numberOfExecTime=1):
    return round(Timer(partial(function, *args, **kwargs)).timeit(numberOfExecTime), 5)

如果可以牺牲numberOfExecTime参数的默认值,则可以这样做:

from timeit import Timer
from functools import partial

def get_execution_time(function, numberOfExecTime, *args, **kwargs):
    """Return the execution time of a function in seconds."""
    return round(Timer(partial(function, *args, **kwargs))
                 .timeit(numberOfExecTime), 5)

def foo(a, b, c = 12):
    print a, b, c

get_execution_time(foo, 1, 3, 4, c = 14)

或者,您也可以这样做,并且仍然具有numberOfExecTime的默认值:

^{pr2}$

相关问题 更多 >

    热门问题