并发编程(三)Python编程慢的罪魁祸首。全局解释器锁GIL
并发编程(四)如何使用多线程,使用多线程对爬虫程序进行修改及比较
并发编程(七)好用的线程池ThreadPoolExecutor
并发编程(九)使用多进程multiprocessing加速程序运行
并发编程(十二)使用subprocess启动电脑任意程序(听歌、解压缩、自动下载等等)
# -*- coding: utf-8 -*-
# @Time : 2021-03-22 16:35:26
# @Author : wlq
# @FileName: flask_process_pool.py
# @Email :[email protected]
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()
结果:
如有疑问,可以参考该系列前面几个博客内容。