当前位置:   article > 正文

AI实战:AI模型部署系列之多进程_python linux flask server 多进程 ai model

python linux flask server 多进程 ai model

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)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 说明
    用法:
    python refuse_service.py 0.0.0.0 6007 2
    0.0.0.0:ip
    6007:端口
    2:开启的进程数量

安装环境

pip install flask
  • 1

开启服务

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/煮酒与君饮/article/detail/972602
推荐阅读
相关标签
  

闽ICP备14008679号