Timeit模块-将参数传递给python Timeit模块

Timeit模块-将参数传递给python Timeit模块,python,timeit,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 define

在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
Per:

要使
timeit
模块能够访问您定义的函数,可以传递包含导入语句的设置参数

在您的情况下,例如:

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

下面是一个示例,说明了如何做到这一点:

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

请注意,我添加了数字=100,所以每次测试都会运行100次。默认情况下,它运行1000000次。

不是无限的,但默认情况下,
timeit
运行1000000次。你看过文件了吗?!无关:您还可以使用命令行界面:
python-mtimeit-s'x=list(范围(10000));d=[{i:i}表示x中的i]'d[9999]'