warnings.filterwarnings('ignore') # 警告扰人,手动封存
from multiprocessing import cpu_count, Pool
import sys
import time
# 设定项目的root路径, 方便后续相关代码文件的导入
root_path = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.append(root_path)
# 服务框架使用Flask, 导入工具包
from flask import Flask, jsonify
from flask import request
app = Flask(__name__)
# 导入发送http请求的requests工具
import requests
# 导入项目相关的代码文件
from model.mh_demo import demo
@app.route("/", methods=["GET", "POST"])
def process():
print("开始运行")
start_time = time.time()
total_text = []
if request.method == "GET":
return "请使用post请求方式"
if request.method == "POST":
if request.content_type.startswith('application/json'):
text_l = request.json.get("text")
elif request.content_type.startswith('multipart/form-data'):
return "使用application/json格式"
else:
return "使用application/json格式"
print(text_l,type(text_l))
a = demo
MP = Multiprocessing(a, text_l)
result = MP.parallelize()
stop_time = time.time()
print(stop_time - start_time, '结束运行')
return jsonify(result)
class Multiprocessing():
def __init__(self, fun, data):
self.fun = fun
self.data = data
def parallelize(self):
# 计算当前服务器CPU的数量
cores = cpu_count()
# 将分块个数设置为CPU的数量
# 初始化线程池
pool = Pool(cores)
# 数据分发, 处理, 再合并
data = pool.map(self.fun, self.data)
# 关闭线程池
pool.close()
# 执行完close后不会有新的进程加入到pool, join函数等待所有子进程结束
pool.join()
# 返回处理后的数据
return data
if __name__ == "__main__":
app.run(threaded=True,host='0.0.0.0', port=xxxx)
接收post请求,并多线程跑
最新推荐文章于 2024-02-29 13:32:07 发布