python 使用 io.BytesIO 内存文件加速图片生成服务

博客内容讲述了如何在使用Python Sanic框架的服务中,通过BytesIO对象代替临时文件,以减少IO时间,提高效率。示例代码展示了如何在生成颜色块图像时直接返回内存中的图像数据,避免了文件写入和读取的过程。

服务使用了 python3.7,sanic 框架,使用临时文件的大概代码如下:

​import os
import sys
import logging
import traceback
import sanic
import asyncio
import matplotlib.pyplot as plt

app = sanic.Sanic('My color patch service', load_env='MY_COLORPATCH_')

def _worker(request):
  data = request.pop('data')
  longitudes = [r[0] for r in data]
  latitudes = [r[1] for r in data]
  values = [r[2] for r in data]
  fig = plt.figure(figsize=(10, 10), dpi=90)
  '''
  draw image by matplotlib
  '''
  image_file = os.path.realpath('out1.png')
  fig.savefig(image_file, transparent=True)
  plt.close(fig)
  return image_file

def _worker_wrap(request):
  try:
    return _worker(request)
  except KeyboardInterrupt as e:
    raise e  # rethrow the Ctrl+C Exception, for terminate the worker process
  except:
    return traceback.format_exc(limit=5)

@app.route('/gen_color_patches', {'POST'})
async def make_color_patch(request):
  loop = asyncio.get_event_loop()
  resp = await loop.run_in_executor(None, _worker_w
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值