python - 第一次调用 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()
解决方案
推荐阅读
- android - 使用 LocalDate 而不是日月年的 DatepickerDialog
- datatable - 角材料 MatTableDataSource 服务器端分页不起作用
- reactjs - 当应用程序在本机反应中处于后台时如何更新服务中的纬度和经度
- corda - Is there a limit to the number of inputs/outputs states during transaction building?
- java - 使用 for 循环的 Java 搜索数组未找到所有结果
- sql - 使用外部表将数据从一个 sql 数据库传输到 azure 中的其他数据库
- asp.net - ASP.NET MVC 中的模拟和授权
- r - 基于矩阵元素为igraph中的节点添加属性
- qt - Qt:未正确添加子布局
- travis-ci - 具有 Firebase 托管和 create-react-app 的 Travis:找不到公共目录