系列索引:菜菜的并发编程笔记 | Python并发编程详解(持续更新~)
一、WEB服务的架构以及特点
二、使用线程池ThreadPoolExecutor加速
使用线程池ThreadPoolExecutor优点:
- 方便将磁盘文件、数据库、远程API的IO调用并发执行
- 线程池的线程数目不会无限创建(导致系统崩溃),具有防御功能
三、用Flask实现Web服务加速
我们可以使用Postman或者time命令来查看运行时间,不使用线程池的时间为0.6s+,使用线程池为0.3s+,因为最长的read_api的执行时间是0.3秒。可以看出线程池的巨大提速作用。
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()
多线程部分到这里基本就讲完了,后面会有多进程
部分和协程
的分析。欢迎继续关注~
Python进阶之并发编程篇持续更新,欢迎
点赞收藏
+关注
上一篇:菜菜的并发编程笔记 |(六)如何使用线程池改造爬虫程序详解
下一篇:菜菜的并发编程笔记 |(八)使用多进程multiprocessing进行项目开发
本人水平有限,文章中不足之处欢迎下方👇评论区批评指正~如果感觉对你有帮助,点个赞👍 支持一下吧 ~
不定期分享 有趣、有料、有营养内容,欢迎 订阅关注 🤝 我的博客 ,期待在这与你相遇 ~