Python 3: time.perf_counter() 输出与 Coursera 上的程序处理时间不匹配

Python 3: time.perf_counter() output does not match the programme processing time on Coursera

我一直在做 Coursera 作业,它要求我的 运行 时间少于 5.00。代码在下面,但我的问题基本上是关于第一行和最后一行,我在那里测试处理时间

import time

def pairwise_product(number):
  n = len(number)
  product = 0   
  for i in range(n):
    for j in range(i+1, n):
        product = max(product, number[i] * number[j])       
  return product

input_length = int(input())
input_number = [int(x) for x in input().split()]
print(pairwise_product(input_number))

print(time.perf_counter())

使用最后一行代码,我的处理时间是 3.3251947

然而,当我将这段代码提交到 Coursera 时,我的作业失败了,因为根据系统,我的处理时间是 9.99

我很困惑,因为我电脑上的运行时间和Coursera上的运行时间不一致,这意味着我无法在提交前调试和测试我的程序它。跟我的节目有关吗?

非常感谢!

不同的计算机运行速度不同。 Coursera 的评分器比您的机器慢并不奇怪,因为 autograders/online 评委通常 运行 在旧机器上。旧的慢机器很便宜,分级服务不是收入来源。

您最多只能尝试估计机器速度的比率。但要注意:Coursera 的评分器在 10 秒时停止,限制为 5 秒。因此,您实际上并不知道评分者 运行 完成了您的课程;它可能慢了三倍多。

在大多数情况下,任务的时间限制会比必要的时间长得多,以避免此类问题。如果你得到了 TLE,你可能需要找到更好的算法