python中使用多线程改进flask案例
作者:kuokay 时间:2022-11-07 05:44:55
前言:
线程是指进程内的一个执行单元,也是进程内的可调度实体.
与进程的区别:
(1) 地址空间:进程内的一个执行单元;进程至少有一个线程;它们共享进程的地址空间;而进程有自己独立的地址空间;
(2) 资源拥有:进程是资源分配和拥有的单位,同一个进程内的线程共享进程的资源
(3) 线程是处理器调度的基本单位,但进程不是.
(4) 二者均可并发执行.
简而言之,一个程序至少有一个进程,一个进程至少有一个线程.
线程的划分尺度小于进程,使得多线程程序的并发性高。
另外,进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率。
1.线程和进程关系?
进程就是一个应用程序在处理机上的一次执行过程,它是一个动态的概念,而线程是进程中的一部分,进程包含多个线程在运行。
多线程可以共享全局变量,多进程不能。多线程中,所有子线程的进程号相同;多进程中,不同的子进程进程号不同。
进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位.
线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源.
一个线程可以创建和撤销另一个线程;同一个进程中的多个线程之间可以并发执行.
下面来介绍具体的多线程改进flask项目案例!!!
2.多线程
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()
3.多进程
import flask
from concurrent.futures import ProcessPoolExecutor
import math
import json
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()
来源:https://blog.csdn.net/qq_45066628/article/details/123082471
标签:python,多线程,改进,flask
0
投稿
猜你喜欢
使用Python+OpenCV进行卡类型及16位卡号数字的OCR功能
2022-04-01 08:18:50
python list 合并连接字符串的方法
2021-12-18 09:35:30
MySQL最基本的命令使用汇总
2024-01-28 06:18:30
python中的classmethod与staticmethod
2021-07-14 00:43:29
SQL Server正则表达式 替换函数应用详解
2024-01-28 06:01:16
python微信跳一跳系列之棋子定位颜色识别
2023-01-16 04:52:49
在Python中字典根据多项规则排序的方法
2023-09-12 00:51:38
Python采集二手车数据的超详细讲解
2022-09-23 00:58:22
python入门学习之自带help功能初步使用示例
2021-05-27 17:07:28
Python聚类算法之基本K均值实例详解
2023-07-14 12:49:08
如何在sublime编辑器中安装python
2021-01-12 05:27:00
python之pil的使用详解
2023-01-19 07:21:19
mysql ERROR 1045 (28000)问题的解决方法
2024-01-16 23:24:32
pytorch简单实现神经网络功能
2022-02-21 23:29:49
SQL Server命令行导数据的2种方式
2010-07-26 14:48:00
详解python中的Turtle函数库
2021-10-17 19:50:45
Python的Flask框架中@app.route的用法教程
2022-05-14 07:25:19
Mysql 删除重复数据保留一条有效数据(最新推荐)
2024-01-20 17:08:11
ASP函数过滤数组中重复数据方法
2010-01-02 20:32:00
pytorch中Tensor.to(device)和model.to(device)的区别及说明
2021-10-20 05:26:06