问题不在于算法或解决代码错误。我只想弄清楚跟踪时间是如何工作的。例如,有一行:
x = my_func(4, 2) * time()
该行运行时间为3.0秒,my_func(4, 2)
需要0.5秒才能返回结果。
问题是time()什么时候开始跟踪时间?在3.0秒时,该行何时运行?还是在3.5,计算my_func(4,2)之后?
答案 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()
模块,该模块是专门为这种基准测试而设计的。