我想测量代码中的操作之间传递的时间

时间:2012-08-21 11:31:44

标签: python urllib2

我想以毫秒为单位测量时间,这一行是:

before=datetime.datetime.now()  
response = urllib2.urlopen("https://www.google.com")
after=datetime.datetime.now()

它应该是服务器的一种解决方法,它不会ping回,所以我必须从服务器响应中测量它。 我可以得到字符串返回字符串 0:00:00.034225 如果我扣除两次并且我能够获得毫秒作为子字符串,但我希望以更清洁的方式获得毫秒(完全不同于ms,包括从秒转换的时间,如果服务器以非常大的延迟响应的话。)

2 个答案:

答案 0 :(得分:5)

after - beforedatetime.timedelta对象,total_seconds方法会为您提供所需内容。您可以找到其他信息in the Python docs

您只需乘以1000即可获得毫秒数。不要担心,虽然该方法称为total_seconds,但它包含毫秒作为小数位。样本输出:

>>> d = t1 - t0
>>> d.total_seconds()
2.429001

这不会给你超时,只是对持续时间的测量。

答案 1 :(得分:1)

urlopen允许您传递超时参数,并在经过很长时间后自动中止。 From the docs:

 urllib2.urlopen(url[, data][, timeout])
     

可选timeout参数指定阻塞操作(如连接尝试)的超时秒数(如果未指定,则为   将使用全局默认超时设置)。这实际上只有作用   用于HTTP,HTTPS和FTP连接。


Python实际上有一种计算小块代码的机制 - timeit.Timer - 但这是用于性能分析和测试的,而不是用于实现自己的超时。