python并发编程实战(八):python使用线程池在web服务中实现加速

1|0web服务的架构以及特点


2|0使用线程池ThreadPoolExecutor加速


3|0加速前


tmp/05.falsk_thread_pool.py
这三种模拟的场景(读文件、读数据库、访问API)都是IO,使用sleep就相当于做了一次IO

import flask import json import time app = flask.Flask(__name__) def read_file(): time.sleep(0.1) return "file result" def read_db(): time.sleep(0.2) return "db result" def read_api(): time.sleep(0.3) return "api result" @app.route("/") def index(): result_file = read_file() result_db = read_db() result_api = read_api() return json.dumps({ "result_file": result_file, "result_db": result_db, "result_api": result_api }) if __name__ == '__main__': app.run()

使用postman请求的时间:三次都是6s多一点点,和我们设定的时间大体一致


4|0加速后


import flask import json import time from concurrent.futures import ThreadPoolExecutor app = flask.Flask(__name__) pool = ThreadPoolExecutor() def read_file(): time.sleep(0.1) return "file result" def read_db(): time.sleep(0.2) return "db result" def read_api(): time.sleep(0.3) return "api result" @app.route("/") def index(): result_file = pool.submit(read_file) result_db = pool.submit(read_db) result_api = pool.submit(read_api) return json.dumps({ "result_file": result_file.result(), "result_db": result_db.result(), "result_api": result_api.result() }) if __name__ == '__main__': app.run()

使用postman请求后的结果,发现只有300ms多一点,变为原来多一半。其实是取最长的时间,原来的比较短的两个时间的操作都是在最长时间内完成的


__EOF__

本文作者cnhkzyy
本文链接https://www.cnblogs.com/my_captain/p/16444801.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   cnhkzyy  阅读(103)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
历史上的今天:
2019-07-04 gauge自动化框架踩坑(六):关于csv
2019-07-04 gauge自动化框架踩坑(五):关于表格
2018-07-04 自己动手写一个U盘拷贝小工具
2017-07-04 《Advanced Bash-scripting Guide》学习(十四):HERE Document和cat <<EOF
2017-07-04 《Advanced Bash-scripting Guide》学习(十三):引用变量的两个例子
2017-07-04 《Advanced Bash-scripting Guide》学习(十二):占位符":"及其他
点击右上角即可分享
微信分享提示