pys*_*ent 5 python string variables function timeit
我正在尝试使用timeit.timeit来查找执行特定代码行所需的时间.问题是这一行包含变量,我需要以某种方式导入它们,所以我的问题是如何?为了更清楚,代码看起来像这样:
def func():
var1 = 'aaa'
var2 = 'aab'
t1 = timeit.timeit('var1==var2', 'from __main__ import ___', number = 10**4) # here I'm missing what to put after the import
Run Code Online (Sandbox Code Playgroud)
如果我试图在这个代码中执行此代码,__main__
我会直接使用'from __main__ import var1, var2'
Any解决方案导入变量吗?
timeit.Timer
将可调用的字符串和字符串作为eval
版本2.6中已更改: stmt和setup参数现在还可以使用不带参数的可调用对象.这将在计时器函数中嵌入对它们的调用,然后由timeit()执行.请注意,由于额外的函数调用,在这种情况下,时序开销会略大一些.
(也见源,寻找elif hasattr(stmt, '__call__'):
).
在变量上创建一个闭包并将其传递给timeit:
def func():
var1 = 'aaa'
var2 = 'aab'
t1 = timeit.timeit(lambda: var1 == var2, number = 10**4)
Run Code Online (Sandbox Code Playgroud)
或等效地:
def func():
var1 = 'aaa'
var2 = 'aab'
def closure():
return var1 == var2
t1 = timeit.timeit(closure, number = 10**4)
Run Code Online (Sandbox Code Playgroud)