timeit.timeit 以科学计数法返回时间?
timeit.timeit returning time in scientific notation?
我正在使用 timeit.timeit
函数为我自己的一个函数计时,但返回的时间是科学计数法。
import timeit
def func():
...
print(timeit.timeit(stmt="func()", setup="from __main__ import func", number=100000)/100000)
这 returns 类似于 3.563012266666666e-05
。我以前用过timeit
,但是从来没有出现过这种情况。有人知道为什么要这样做吗?
3.563012266666666e-05
并不是真正的指数形式;这只是科学计数法。 3.563012266666666e-05
等于 0.00003563012266666666
。科学计数法用于表示非常大或非常小的数字。
发生这种情况是因为您将它除以 1000。如果您不这样做,则输出如下所示:
>>> print(timeit.timeit(stmt="func()", setup="from __main__ import func", number=100000))
>>> 0.009756448998814449
Python 将使用科学记数法显示任何大或小的数字(低于或超过一定范围)。
如果你想像以前一样看到结果,你可以像这样利用 Python 的字符串格式:
>>> t = timeit.timeit(stmt="func()", setup="from __main__ import func", number=100000)/100000
>>> f"{t:.20f}"
此处,:.20
确保它会打印最多 20 位小数的数字。但是,请记住,这样做是将浮点数转换为字符串。这将 return:
>>> '0.00000009274555020966'
这可能是因为你在检索时间后进行了划分。您可以在使用 f strings (f"{time:.4f}") 打印值时对其进行格式化
.4f
告诉 python 将该值打印为带小数点后 4 位的浮点数,您可以根据需要设置它的大小,以查看您想要的位数。
我正在使用 timeit.timeit
函数为我自己的一个函数计时,但返回的时间是科学计数法。
import timeit
def func():
...
print(timeit.timeit(stmt="func()", setup="from __main__ import func", number=100000)/100000)
这 returns 类似于 3.563012266666666e-05
。我以前用过timeit
,但是从来没有出现过这种情况。有人知道为什么要这样做吗?
3.563012266666666e-05
并不是真正的指数形式;这只是科学计数法。 3.563012266666666e-05
等于 0.00003563012266666666
。科学计数法用于表示非常大或非常小的数字。
发生这种情况是因为您将它除以 1000。如果您不这样做,则输出如下所示:
>>> print(timeit.timeit(stmt="func()", setup="from __main__ import func", number=100000))
>>> 0.009756448998814449
Python 将使用科学记数法显示任何大或小的数字(低于或超过一定范围)。
如果你想像以前一样看到结果,你可以像这样利用 Python 的字符串格式:
>>> t = timeit.timeit(stmt="func()", setup="from __main__ import func", number=100000)/100000
>>> f"{t:.20f}"
此处,:.20
确保它会打印最多 20 位小数的数字。但是,请记住,这样做是将浮点数转换为字符串。这将 return:
>>> '0.00000009274555020966'
这可能是因为你在检索时间后进行了划分。您可以在使用 f strings (f"{time:.4f}") 打印值时对其进行格式化
.4f
告诉 python 将该值打印为带小数点后 4 位的浮点数,您可以根据需要设置它的大小,以查看您想要的位数。