1

我是个下载狂。我下载的大部分内容都以千兆字节为单位,但以兆字节为单位显示。

我想构建一个小型python程序,根据连接速度检测下载完成需要多长时间。

我的数学很糟糕,我不知道从哪里开始算法。

它将有浮点数..我知道连接速度有时会非常不稳定,它们可能会上升和下降..但这将是一个近似值。我喜欢数学,但浮点数是一个很大的弱点。

它应该有点像这样:

fileSize: raw_input("How big is the file you are downloading? ")
conSpeed: raw_input("How fast is your current connection speed? ")

## Make sure fileSize and conSpeed are floats

print("Your download will finish in "+str(ALGORITHM_VAL)+" .")

# prints no more than 4 digits, not like 1 hour 23423432423424 seconds

感谢您的帮助家伙(和女孩),非常感谢!

4

2 回答 2

0

使用的基本等式是:estimated_time = file_size/con_speed

请确保玩具在计算时具有一致的单位。例如:如果您的连接速度以每秒兆字节 (Mbps) 为单位,则文件大小也应以兆字节为单位。

通常 1 Gb 是 1024 Mb 或 1000 Mb(大约)

有关其他转换率,请查看此图表: http ://www.wu.ece.ufl.edu/links/dataRate/DataMeasurementChart.html

请记住,互联网服务提供商通常使用 1000 作为近似单位,而不是 1024。

于 2013-03-22T16:31:14.403 回答
0

如果两个输入使用相同的测量单位,则应该是标准除法运算:

size = raw_input("File size in KB: ")
speed = raw_input("Speed in KB/sec: ")
est = float(size) / float(speed)
print "It will take %f seconds." % est

实际上,任何时候你看到per一词,例如英里每小时或千字节每秒,你都可以想到除以:英里除以小时,或千字节除以秒。

现在,如果您的文件大小输入采用不同的度量单位,例如兆字节,您需要先将其转换为通用度量单位:

sizeInKb = float(size) * 1024
est = float(sizeInKb) / float(speed)

最后,您可以通过导入使用 Python 轻松显示持续时间datetime

print "Estimated Time: %s" % datetime.timedelta(seconds = est)

希望这可以帮助!

于 2013-03-22T16:34:56.743 回答