首页 > 解决方案 > Python 3:time.perf_counter() 输出与 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 上的运行时不一致,这意味着我无法在提交之前调试和测试我的程序。和我的程序有关吗?

十分感谢!

标签: pythonalgorithmoptimizationruntimecoursera-api

解决方案


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

您能做的最好的事情就是尝试估计您的机器更快的比率。但请注意:Coursera 的评分器在 10 秒时停止,有 5 秒的限制。所以你实际上并不知道评分者已经完成了你的程序的运行;它可能会慢三倍多。

在大多数情况下,一项任务的时间限制将远远高于必要的时间,以避免此类问题。如果您获得 TLE,您可能需要找到更好的算法


推荐阅读