2

我想以毫秒为单位测量时间,这条线花了:

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

它应该是服务器的一种解决方法,它不会回复,所以我必须从服务器响应中测量它。如果我扣除两次,我可以得到字符串返回字符串0:00:00.034225并且我能够将毫秒作为子字符串,但我想以更简洁的方式获得毫秒(以毫秒为单位的整体差异,包括从秒转换的时间,如果服务器响应延迟很大)。

4

2 回答 2

5

after - before是一个datetime.timedelta对象,它的total_seconds方法会给你你正在寻找的东西。您可以在 Python 文档中找到更多信息。

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

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

但是,这不会给您超时,只会测量持续时间。

于 2012-08-21T11:39:28.163 回答
1

urlopen允许您传递超时参数,并在经过这么长时间后自动中止。从文档:

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

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


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

于 2012-08-21T11:37:00.007 回答