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)
顺便说一句,我有一个问题:我无法向要计时的函数提供多个输入(参数)。 我怎样才能做到这一点?部分是正确的工具吗?
我尝试了装饰器,但无法存储进行一些统计所需的时间。
I create this working function for getting time of another function:
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)
By the way I have a problem: I can't give multiple input (args) to the function to be timed.
How can I do that? Is partial the right tool?
I tried decorator but I can't store the time which is what I need for doing some statistics.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
如果您可以牺牲
numberOfExecTime
参数具有默认值的能力,您可以这样做:或者您可以这样做,但仍然具有
numberOfExecTime
的默认值:If you can sacrifice ability to have default value for
numberOfExecTime
argument you can do it like that:Or you can do it like that and still have default value for
numberOfExecTime
:您可以传递多个参数:
args
应该是包含要传递的参数的元组。现在,您可以传递
*args
而不是args
。(如果您还需要将 kwargs 传递给您的方法,则在
get_execution_time
中添加另一个参数kwargs
并将**kwargs
传递给您的函数
)You can pass multiple arguments:
args
should be a tuple containing the arguments to pass.Now, you can pass
*args
instead ofargs
.(If you need to also pass kwargs to your method, then have in
get_execution_time
another argumentkwargs
and pass**kwargs
to yourfunction
)我会使用计时装饰器。
使用装饰器很容易或者使用注释。
或者为您想要计时的函数重新设置别名。
我的博客文章在这里有更多信息。 http://blog.mattalcock.com/2013/2/24/计时-python-代码/
I would use a timing decorator.
Using the decorator is easy either use annotations.
Or re-alias the function you want to time.
My blog post here has more information. http://blog.mattalcock.com/2013/2/24/timing-python-code/
如果 args 是参数列表,您可以使用 *args 扩展它:
If
args
is alist
of arguments you can expand it with*args
: