首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >具有时间参数的时间函数/方法:一个简单而简短的解决方法

具有时间参数的时间函数/方法:一个简单而简短的解决方法
EN

Stack Overflow用户
提问于 2015-06-06 12:27:40
回答 2查看 760关注 0票数 0

我想我们都看到timeit在尝试使用timeit与自定义函数/方法并将参数传递给它时,在ValueError: stmt is neither a string nor callable之类的东西上失败了。

例如。

代码语言:javascript
运行
复制
1> import timeit         
2>                       
3> def testing(a):       
4>     for i in range(0, 1000):
5>         a + 1     
6>                       
7> print (timeit.timeit(testing(5), number=1000))

如果没有进一步的设置/导入,ValueError: stmt is neither a string nor callable将失败,因为它无法定位(在我看来,这会扰乱语句)。

因此,剩下的问题是:有什么小的、极简的(甚至可能是"pythonic")的方法来处理这个问题?

我们如何轻松地计时一个代码片段,以便使用pythons timeit的所有优点来度量执行时间?

EN

Stack Overflow用户

回答已采纳

发布于 2015-06-06 12:27:40

我发现的一个答案(在我看来是一个不错的答案)是将要调用的函数封装到另一个非参数函数中。当然,这会造成一些开销,并使readability...that陷入混乱,这就是为什么lambdas是解决这一小问题的好方法:

代码语言:javascript
运行
复制
1> import timeit               
2>                             
3> def testing(a):             
4>     for i in range(0, 1000):
5>         a + 1           
6>                             
7> print (timeit.timeit(lambda: testing(5), number=1000))

Output> 0.0097241420746

我们mad唯一的更改是在第7行:与直接调用测试不同,我们用lambda函数包装它。现在,它不必担心未知的参数,因为它得到了一个干净的、包装好的匿名函数。

另一个好处是这个可以在python2.7.X和python3.x中工作,没有任何更改:)

票数 1
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30682846

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档