当前位置: 首页 > news >正文

专业建站公司电话咨询加强服务保障满足群众急需ruu7

专业建站公司电话咨询,加强服务保障满足群众急需ruu7,外贸soho虚拟公司做网站,wordpress 文章排名目录 前情提要剩下问题 问题排查解决方案下一步 前情提要 果蔬识别系统性能优化之路(三) 剩下问题 同步数据库数据并初始化ivf依然要8,9秒 问题排查 通过断点加时间打印,发生其实初始化ivf的时间很快,慢的是数据在网络间的传…

目录

    • 前情提要
      • 剩下问题
    • 问题排查
    • 解决方案
    • 下一步

前情提要

果蔬识别系统性能优化之路(三)

剩下问题

同步数据库数据并初始化ivf依然要8,9秒

问题排查

通过断点加时间打印,发生其实初始化ivf的时间很快,慢的是数据在网络间的传输,并在python端的数据解析,无语
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
本地调本地,都要十秒,这不合理,改!

解决方案

因为这里必须要查一次全量数据,然后存入redis并将特征值传给python端进行初始化,所以最快的方案就是舍弃数据传输,直接在python端进行查询并初始化,即在python端查全量数据+设置redis+初始化ivf,虽然不想承认,但确实把python端做重在架构和设计层面可能都是最优解,改吧

  1. python端增加mysql查询
import mysql.connector
from mysql.connector import pooling# 配置数据库连接
db_config = {'host': 'localhost',  # 替换为你的 MySQL 主机地址'user': 'root',  # 替换为你的 MySQL 用户名'password': 'cmkkl407',  # 替换为你的 MySQL 密码'database': 'cnn'  # 替换为你的数据库名称
}
pool = pooling.MySQLConnectionPool(pool_name="mypool", pool_size=5, **db_config)def get_feature_by_store_code(store_code):query = "SELECT id, features FROM feature WHERE storeCode REGEXP %s"results = query_data(query, params=(f"(^|,){store_code}(,|$)",))return resultsdef query_data(query, params):connection = pool.get_connection()cursor = connection.cursor(dictionary=True)cursor.execute(query, params)results = cursor.fetchall()cursor.close()connection.close()  # 连接会被返回到池中return results
  1. 修改sync方法
  def sync(self, store_code):if store_code + '-featureDatabase' in self.ivfObj:del self.ivfObj[store_code + '-featureDatabase']data = get_feature_by_store_code(store_code)def parse_features(item):return orjson.loads(item['features'])with ThreadPoolExecutor() as executor:features_list = list(executor.map(parse_features, data))# 提取所有特征并转换为 NumPy 数组features = np.array(features_list, dtype=np.float32)self.ivfObj[store_code + '-featureDatabase'] = IVFPQ(features)ids = [item['id'] for item in data]return ids

由于python端查出来的json默认会给字符串格式,所以还需要转成json
一个优化小点:

并行处理:使用多线程或多进程并行处理数据。可以使用 concurrent.futures 库中的 ThreadPoolExecutor 或 ProcessPoolExecutor 来加快解析速度。

   def parse_features(item):return orjson.loads(item['features'])with ThreadPoolExecutor() as executor:features_list = list(executor.map(parse_features, data))

同时利用查出了所有id将ids进行返回给nestjs端直接进行redis存储
4. nestjs端修改

 /*** 同步redis* @param storeCode*/async syncRedis(storeCode: string) {const url = 'http://localhost:5000/sync'; // Python 服务的 URLconst s = Date.now();const response = await firstValueFrom(this.httpService.post(url, { storeCode }));const { ids } = response.data;await this.redisService.set(`${storeCode}-featureDatabase`, JSON.stringify(ids));const e = Date.now();console.log(`同步redis耗时:${e - s}ms`);}
  1. 优化后速度减少了一倍
    在这里插入图片描述

下一步

  1. 新建store_feature表,关联storeCode和featureId表,对数据库进行规范化,创建一个新的表来映射storeCode与feature的关系,从而可以使用简单的WHERE条件来充分利用索引
  2. 实现对特征向量ivf的增删改查
http://www.hkea.cn/news/351951/

相关文章:

  • wordpress读者墙站长之家seo工具包
  • 网站建设哪家好灵活苏州久远网络北京搜索引擎关键词优化
  • 网站优化怎么做 有什么技巧东莞seo建站
  • 什么网站可以做游戏机疫情最新数据消息
  • 企业网站开发报价单巩义网络推广
  • 网站开发技术交流群免费域名申请网站
  • 手机网站一键分享怎么知道自己的域名
  • 做网站 做好把我踢开北京网站搭建哪家好
  • 网站如何做引流刷外链网站
  • wordpress 站点地址关注公众号一单一结兼职
  • 合肥网站建设第一品牌个人seo外包
  • 省心的免费建站服务热线四川seo关键词工具
  • 网站总是跳转dede58seo对网络推广的作用是
  • seo排名怎么提高seo排名优化软件有用
  • 江门论坛建站模板黑帽seo联系方式
  • 政府网站信息内容建设专项检查搜索引擎排名优化seo课后题
  • 个人做的好的淘宝客网站软文营销推广
  • 城乡建设委员会网站河北seo推广公司
  • 某网站栏目策划2022十大热点事件及评析
  • 德清网站建设中心优化大师官方免费下载
  • 生日网页制作免费网站制作代做网页设计平台
  • 学校类网站特点游戏优化大师官网
  • 手机电视网站大全河南网站建设定制
  • zblog做的商城网站上海有实力的seo推广咨询
  • 免费网站模板psd网络营销的整体概念
  • 网站模板下载破解版环球军事新闻最新消息
  • 徐汇苏州网站建设东莞免费建站公司
  • 厦门网站建设哪家强深圳网站维护
  • 政府网站新媒体平台建设关键词权重查询
  • 重庆网站建设制作公司百度客服人工在线咨询电话