Python为套接字连接计时

2024-05-15 03:44:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我希望得到时间,以完成一个往返到服务器使用TCP。使用windows客户端时。 (我会使用ping,但服务器正在阻止它)

我正在考虑使用python和sockets来完成这项工作,目前我已经完成了。在

import time
import socket

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM )

start = time.time()
s.connect(('localhost',80))
print 'time taken ', time.time()-start ,' seconds'

s.close()

我的问题是我不认为连接计时器是工作的,因为我经常得到相同的时间戳返回。有人能给我指出解决这个问题的正确方向吗。在


Tags: import服务器客户端timewindows时间socketping
2条回答

使用以下修改后的脚本,我得到的结果与Windows7上的ping相同。在

import time
import socket
while True:
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM )
    start = time.time()
    s.connect(('www.google.at',80))
    print 'time taken ', (time.time()-start)*1000 ,' ms'
    s.close()
    time.sleep(1)

ping本地主机总是给我相同的非常小的值。这可能就是问题所在。在

在Windows上,time.time()值没有足够的粒度(只有1/60秒)。使用^{},它在Windows上的分辨率约为1/3微秒,而不是:

start = time.perf_counter()
s.connect(('localhost',80))
print 'time taken ', time.perf_counter()-start ,' seconds'

这是^{} module使用的同一个计时器;您可以使用.default_timer()定义来代替:

^{pr2}$

这也适用于python2,其中time.perf_counter()不可用,但^{}将引用您的操作系统的最佳可用计时器(time.clock(),在Windows上,该计时器的分辨率约为第二个分辨率的1/100,在其他系统上为time.time())。在

相关问题 更多 >

    热门问题