问题不在于算法或修复代码中的错误。我只是想弄清楚跟踪时间是如何工作的。例如,有一行:
x = my_func(4, 2) * time()
该行在 3.0 秒时运行,my_func(4, 2) 需要 0.5 秒才能返回结果。
问题是 time() 什么时候开始跟踪时间?在 3.0 秒,线路何时运行?还是在 3.5 时,在计算 my_func(4, 2) 之后?
请您参考如下方法:
与大多数运算符一样,“*”运算符的操作数按从左到右的顺序求值。 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 日开始运行它。常规方法是在程序开始时执行 start_time = time.time(),然后在结束时执行 end_time = time.time(),然后减去二。
或者您可以使用专为此类基准测试设计的 timeit 模块。
