AI实战:AI模型部署系列之多进程

AI实战:AI模型部署系列之多进程

AI实战:AI模型部署系列之docker
AI实战:AI模型部署系列之多进程

本文分享部署AI模型的经验:多进程。

本文使用开源框架flask实现多进程,在 AI实战:AI模型部署系列之docker 基础之上实现。

干货

代码框架简单如下:

refuse_service.py

import os, time, sys, re
from flask import Flask, request
import multiprocessing
import tensorflow as tf


def process(pipe, thread_id):
    #子进程处理函数
    
    import refuse
    recognizer = refuse.RefuseRecognize()#识别垃圾类,在进程中定义
    
    
    while True:
        params = pipe.recv()#子进程接收数据
        
        img_url = params['img_url']
        image_data = tf.gfile.FastGFile(img_url, 'rb').read()
        res = recognizer.recognize_image(image_data)#识别垃圾主函数
        #print('classify:\n%s' %(res))
        res = {"res": res}
        
        pipe.send(res)#发送结果给主进程


q = multiprocessing.Queue()
pipes = []
app = Flask(__name__)
@app.route('/refuse', methods=['POST']) #post方法
def recognize_refuse():
    params = request.json #接收json格式数据
    if 'img_url' not in params:
        return '{"error": 101}'#101表示参数错误
        
    tp = q.get(block=True, timeout=30)#设置超时时间30S #取可用的子进程
    pipes[tp].send(params) #向子进程发送数据
    res = pipes[tp].recv() #接收子进程发过来的数据
    #print(35, res)
    q.put(tp, block=False) #回收当前子进程
    
    return res
    
    
if __name__ == '__main__':
    if len(sys.argv) == 4:
        for k in range(0, int(sys.argv[3])):
            pipe = multiprocessing.Pipe(duplex=True)
            q.put(k, block=False)
            worker = multiprocessing.Process(target=process, args=(pipe[1], k))
            pipes.append(pipe[0])
            worker.daemon = True
            worker.start()
            
        app.run(host=sys.argv[1], port=int(sys.argv[2]), threaded=True)
  • 说明
    用法:
    python refuse_service.py 0.0.0.0 6007 2
    0.0.0.0:ip
    6007:端口
    2:开启的进程数量

安装环境

pip install flask

开启服务

docker创建过程具体详见:AI实战:AI模型部署系列之docker

  • 步骤
    进入docker:
    sudo docker exec -it refuse_classify-tensorflow-1.4.0-py3 env LANG=C.UTF-8 /bin/bash

    cd /data/refuse_recognize

    开启服务
    bash run_service.sh

测试

使用 RESTClient 测试

具体步骤如下图:
step

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

szZack

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值