首页 > 解决方案 > 第一次调用 socket.recv(size) 大约需要 0.5s

问题描述

我正在尝试从我的服务器获取要在 Bokeh 中可视化的数据。因此,我会定期调用我的 getData() 函数。该功能有效,但速度极慢。要调用这个函数,它需要大约 0.4 秒来获取一个数据点。

我检查了函数的瓶颈在哪里,99.99% 的时间是由于第一次调用函数 sock.revc(2048) 而我不知道为什么会发生这种情况。如果有人知道为什么会发生这种情况,我将不胜感激。

sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1)
sock.connect(("127.0.0.0", 123456))

start = time.time()
sock.recv(2048) #about 0.4 s
stop = time.time()

start2 = time.time()
sock.recv(2048) #about 2E-6 s
stop2 = time.time()
'''
some Code which preprocess my sample data
'''
print(stop - start)
print(stop2 - start2)

sock.close()

标签: pythonsocketstcp

解决方案


推荐阅读