赞
踩
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)
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 测试
具体步骤如下图:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。