flask 使用ThreadPoolExecutor 加速
#!/usr/bin/env python
# coding:utf8
"""
__time__ = '2021/6/22 14:02'
__author__ = 'Liang'
flask 使用ThreadPoolExeutor 实现加速
"""
import flask
import json
import time
from concurrent.futures import ThreadPoolExecutor
app = flask.Flask(__name__)
# 创建一个全局的pool
pool = ThreadPoolExecutor()
def read_file():
time.sleep(0.2)
return "file result"
def read_db():
time.sleep(0.3)
return "db result"
def read_api():
time.sleep(0.4)
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_db.result()
})
if __name__ == '__main__':
app.run()
使用多进程加速flask
#!/usr/bin/env python
# coding:utf8
"""
__time__ = '2021/6/22 15:22'
__author__ = 'Liang'
"""
import json
import math
import flask
from concurrent.futures import 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(",")]
results = process_pool.map(is_prime, number_list)
return json.dumps(dict(zip(number_list, results)))
if __name__ == '__main__':
process_pool = ProcessPoolExecutor()
app.run()