关于timeit的问题
from timeit import Timerdef t2():
li=[]
for i in range(10000):
li+=
timer2=Timer('t2()','from __main__ import t2')
print('+:',timer2.timeit(10000))
如代码所示,1.我想知道Timer类里面的第二个参数为什么是from__main__import t2?我看定义上面说的是,第二个参数是setup也就是执行第一个参数'stmt'即代码的语句需进行的设置,为什么不能是from timeit import Timer?没搞懂
2.第一行import语句引入的不应该是个模块吗?为什么它引入了一个类?直接import timeit 可以吗
stmt:用于传入要测试时间的代码,可以直接接受字符串的表达式,也可以接受单个变量,也可以接受函数。传入函数时要把函数申明在当前文件中,然后在 stmt = ‘func()’ 执行函数,然后使用 setup = ‘from __main__ import func’
setup:传入stmt的运行环境,比如stmt中使用到的参数、变量,要导入的模块等。可以写一行语句,也可以写多行语句,写多行语句时要用分号;隔开语句。
number:要测试的代码的运行次数,默认100000次,对于耗时的代码,运行太多次会比较慢,此时建议自己修改一下运行次数
repeat:指测试要重复几次,每次的结果构成列表返回,默认3次。
1.
这里 __main__ 就表示在当前的代码下,from__main__import t2 就算导入当时代码下的 t2 函数,因为你要前面要进行测试的是 t2() 函数
2.
甲鱼哥模块那课的循环导入的问题,也是导入的是个函数呀,from timeit import Timer 就是导入 timeit 模块中的 Timer ,你可以直接 import timeit
from xxx import yyy 这样的导入,就是指定导入某些方法或模块啥的,而timeit 没导入的就不能使用
但是 import timeit 将timeit 模块中能导入的全部导入了,但是很多我们用不到,所以当你用的timeit模块的内容时候,你可以选择 第一个导入更为便捷
为什么要从当前代码下导入t2?t2不本来就在这段代码中吗为什么还要导入?
其实你可以这么写
from timeit import Timer
def t2():
li = []
for i in range(10000):
li +=
timer2 = Timer(t2)
print('+:', timer2.timeit(1000))
我感觉起来和上面那个用起来差不多。但实际差距在哪,差距多大,我还不知道
页:
[1]