并发编程(三)Python编程慢的罪魁祸首。全局解释器锁GIL
并发编程(四)如何使用多线程,使用多线程对爬虫程序进行修改及比较
并发编程(七)好用的线程池ThreadPoolExecutor
并发编程(九)使用多进程multiprocessing加速程序运行
并发编程(十二)使用subprocess启动电脑任意程序(听歌、解压缩、自动下载等等)
# -*- coding: utf-8 -*-
# @Time : 2021-03-22 16:35:26
# @Author : wlq
# @FileName: flask_process_pool.py
# @Email :rd_wlq@163.com
import flask
import math
import json
from concurrent.futures import ProcessPoolExecutor
process_pool = ProcessPoolExecutor()
app = flask.Flask(__name__)
# 判断是否是素数
def is_prime(n):
if n < 2:
return False
if n == 2:
return True
if n % 2 == 0:
return False
sqrt_n = int(math.floor(math.sqrt(n)))
for i in range(3, sqrt_n + 1, 2):
if n % i == 0:
return False
return True
@app.route("/is_prime/<numbers>")
def api_is_prime(numbers):
number_list = [int(x) for x in numbers.split(",")]
rsts = process_pool.map(is_prime, number_list)
rst = json.dumps(
dict(zip(number_list, rsts))
)
return rst
if __name__ == '__main__':
app.run()
结果:

如有疑问,可以参考该系列前面几个博客内容。
本文介绍了Python并发编程系列的第十二篇,讲解了如何在Flask服务中利用ProcessPoolExecutor实现进程池,通过并发处理多个素数判断任务,提升程序运行效率。示例代码展示了如何将多个数字传入并行处理,返回结果。
2994

被折叠的 条评论
为什么被折叠?



