代码优化 速度优化 mysql优化程序优化 pickle库

127 阅读1分钟

一、 需求

  1. 我们将excel整张表以json的格式保存到mysql df.to_json()
  2. 在使用的时候我们将查询的json转为dataframe df.read_json()

二、 优化前的思路

  1. 直接将excel转json保存到mysql
  2. 将查询的json转为dataframe
  3. 去掉异常数据同时将nan转为None
   df.replace(to_replace=r'(^\s*$)|--', value=np.nan, regex=True, inplace=True)
   df = df.where(df.notnull(), None)
   
   当然一样
   df = df.replace(to_replace=r'(^\s*$)|--', value=None, regex=True, inplace=True)

  1. 处理数据
df_ret = df[df['时间'] == y_][field_]

三、 及其拖速度过程 2 3 4

  1. 第2步 平均每次 0.004s
  2. 第3步 平均每次差不多也是 0.002s
  3. 第4步 平均每次差不多也是 0.002s 目前未解决

四、解决方案 针对 2 3

# 在保存数据库之前先将文件处理
# 将处理后的文件直接转为二进制类型 python的一个库pickle
df = pd.read_excel(self.base_path + code + '.xlsx')
df = df.replace(to_replace=r'(^\s*$)|--', value=None, regex=True, inplace=True)
df = pickle.dumps(df)


在使用的时候转回来
df = pickle.loads(你查询到的df二进制文件)

总结

  • 之前平均每次查询结果15s现在为2.2秒

  • 思路+技术缺一不可