Timeit模块 - 传递python timeit模块的参数

时间:2015-02-16 08:40:52

标签: python timeit

来自python timeit模块我想检查打印以下内容需要多长时间,如何操作,

import timeit
x = [x for x in range(10000)]
timeit.timeit("print x[9999]")
d=[{i:i} for i in x]
timeit.timeit("print d[9999]")

NameError: global name 'x' is not defined
NameError: global name 'd' is not defined

2 个答案:

答案 0 :(得分:4)

the docs

  

要让timeit模块访问您定义的函数,您可以传递包含import语句的 setup 参数

在你的情况下,那将是例如:

timeit.timeit('print d[9999]', 
              setup='from __main__ import d')

答案 1 :(得分:0)

以下是如何执行此操作的示例:

import timeit

x = [x for x in range(10000)]
d = [{i: i} for i in x]

for i in [x, d]:
    t = timeit.timeit(stmt="print(i[9999])", number=100, globals=globals())
    print(f"took: {t:.4f}")

输出:

took: 0.0776
took: 0.0788

请注意,我添加了number = 100,因此它每次运行100次。默认情况下为1,000,000次。