EMi*_*ler 5 python namespaces timeit
我需要在可变数量的数据上计时函数的执行时间。
def foo(raw_data):
preprocessed_data = preprocess_data(raw_data)
time = timeit.Timer('module.expensive_func(preprocessed_data)', 'import module').timeit()
Run Code Online (Sandbox Code Playgroud)
但是,preprocessed_data不是全局变量。无法使用导入from __main__。它在此子例程中是本地的。
如何导入data到timeit.Timer环境中?
将其传递给时间可调用对象,而不是字符串。(不幸的是,这引入了一些额外的函数调用开销,因此仅当时间浪费掉这些开销时才可行。)
time = timeit.timeit(lambda: module.expensive_func(data))
Run Code Online (Sandbox Code Playgroud)
在Python 3.5及更高版本中,您还可以指定一个显式的globals字典,并带有一个字符串语句来设置时间:
time = timeit.timeit('module.expensive_func(data)',
globals={'module': module, 'data': data})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1160 次 |
| 最近记录: |