相对于所执行的语句,time()在哪个时间点进行度量?

时间:2018-10-01 14:38:01

标签: python python-3.x

问题不在于算法或解决代码错误。我只想弄清楚跟踪时间是如何工作的。例如,有一行:

x = my_func(4, 2) * time()

该行运行时间为3.0秒,my_func(4, 2)需要0.5秒才能返回结果。

问题是time()什么时候开始跟踪时间?在3.0秒时,该行何时运行?还是在3.5,计算my_func(4,2)之后?

1 个答案:

答案 0 :(得分:6)

与大多数运算符一样,“ *”运算符的操作数按从左到右的顺序求值。 my_func将在time开始执行之前完成执行。您可以通过使用打印到stdout的函数作为副作用来进行经验性测试,例如:

>>> def f(x):
...     print(x)
...     return 0
...
>>> x = f("1st") * f("2nd")
1st
2nd

顺便说一句,如果您尝试跟踪my_func的运行时,那么执行my_func(4, 2) * time()并不是一种非常实用的方法。 time.time()返回自Unix时代以来的秒数,因此,除非您从1970年1月1日开始运行它,否则一次调用它都不会告诉您程序的长度。更常规的方法是执行{ {1}}在程序的开头,然后在start_time = time.time()的结尾,然后将两者相减。

或者您可以使用end_time = time.time()模块,该模块是专门为这种基准测试而设计的。