Python3之线程、进程、协程
线程、进程、协程
定义
进程(系统级别的并发):计算机中一个程序在一个数据集上一次动态执行过程,主要包含三部分内容:
程序:描述进程的功能以及处理流程;
数据集:功能处理过程中需要的资源数据;
进程控制块(PCB):严格控制进程执行过程中的各种状态。
通俗来说,一个进程就是计算机上正在运行的一个程序;
一个软件程序要运行,需要将软件依赖的数据加载到内存中,通过 CPU 进行运算并按照程序定义的逻辑结构进行流程控制,知道数据处理完成后程序退出!
在程序实际执行过程中,进程只是分配需要的数据资源,是程序的主体,在程序运行时真正运行的是线程,每个进程至少会有一个线程。
线程(微进程:实现了进程内部的并发):计算机中程序运行的实际执行者就是线程,线程又称为轻量级进程,是一个 CPU 的执行单元,每个进程至少会有一个主线程用于执行程序。
协程(微线程:实现了单线程下的并发):又称微线程,纤程。英文名Coroutine。
线程和进程对比如下:
*一个进程可以有多个线程,但是至少有一个主线程;
*一个线程只能属于一个进程;
*一个进程中多个线程,可以共享进程中提供的数据;
*CPU 运算分配给线程,CPU 上执行运算的是线程;
*线程是最小的运行单元,进程是最小的资源管理单元。
应用场景
多进程:应用于中大型项目开发过程中,对于数据管理更加严格的项目并发操作, 通过进程管理数据,通过线程运行任务,完成并发处理数据。
多线程:微进程,应用于多任务处理机制,对于数据的操作并不是管理严格
如:如果出现了一个大文件的复制粘贴功能-> 多线程效率非常高;
如果出现了一个单路大数据量的的运算功能-> 多线程不如单线程。
Django web framework 多人同时访问网站-> 网站并发量-> 多线程的方式实现; 每个线程,会服务一个访问数据请求。
协程:微线程,应用于多任务处理机制,对于数据的处理更加的松散!
协程的方式,对于注重多任务处理机制的软件,更加的友好!性能处理更加优秀!
Tornado web framework 多人同时访问网站-> 网站并发量-> 事件轮询机制[epoll/Kqueue系统内核] 单线程多任务事件轮询机制_>并发处理效率,> Django
串行、并行、并发
串行:就是传统意义上的同步、顺序的意思,按照一定的执行步骤顺序执行每个环节。
并行:就是传统意义上的异步、同时的意思,同时执行接受到的多个任务。
并发:同时接收到多个任务,同时执行多个任务,但是具体到某个时刻~只是在执行一个任务,只是在很短时间内在多个任务之间切换,模拟形成了多个任务同时执行的现象。
- 关于Python的进程线程协程之threading模块(一)Thread类
- 关于Python的进程线程协程之threading模块(三)Event对象
- Python 中进程、线程、协程、IO复用
- 简述Python中的进程、线程、协程
- 【Python】进程线程协程对比
- python进程、线程、协程
- Python进程、线程、协程
- Python异步非阻塞IO多路复用Select/Poll/Epoll使用,线程,进程,协程
- Python之进程、线程、协程
- 自动化运维Python系列之进程、线程、协程
- Python的协程,线程,进程的理解及实现
- Python:线程、进程与协程(6)——multiprocessing模块(3)
- python线程、进程与协程
- Python 中的进程、线程、协程、同步、异步、回调
- Python基础学习(5)网络编程socket、文件上传、粘包问题、socketserver、IO多路复用、线程与进程、进程池、线程池、上下文管理、协程
- 突破python缺陷,实现几种自定义线程池 以及进程、线程、协程的介绍
- [python笔记]进程,线程和协程的对比
- Python之路,Day9 - 线程、进程、协程和IO多路复用
- python进程、线程、协程
- Python:线程、进程与协程(7)——线程池