接收post请求,并多线程跑

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)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值