Python多进程、多线程、协程编程
来源:http://www.tudoupe.com时间:2022-07-29
Python进程(Process)、线程(Thread)、协程(asyncio)编程
一、多进程编程
进程概念
过程是计算机操作系统分配资源的基本单元,一个程序执行的例子,这就是正在执行的程序。在OS的眼里,进程是一个负责分配系统资源CPU时间和内存的实体。一般来说,系统由一系列过程组成:操作系统过程执行系统代码,用户程序执行用户代码,计算机通过CPU重新使用多个路径,所有这些过程都可以同时执行,因此,可执行过程的数目与CPU性能有关。
1、进程的基本状态
- 就绪:进程的初始状态意味着进程已经具备CPU以外的所有执行条件
- 运行:进程的初始状态意味着进程已经接收了一个处理器,不需要等待其他资源,状态正在执行
- 阻塞:进程阻塞也称为进程等待状态,意思是进程等待特定事件(例如I/O操作)的发生,在此期间,进程仍处于内存中并占有CPU资源
2、图示

过程基本使用例
Process简介
python内置的multiprocessing模块提供了类来方便用户创建一个多进程,其基本结构和参数如下:
结构
参数
- 目标:调用对象,通常是函数、类、进程的执行实体
- 名称:进程名称
- args:调用对象的位置参数组件
- kwargs:调用对象的字典
- 组:基本上没有使用,忽略
过程类提供的方法
- is_alive():返回过程是否被激活
- 停止进程直到进程执行完成或终止为止
- 在可重写的进程中运行的函数
- 启动进程,进程开始运行
- terminate(): 进程终止
创建进程过程
创建自定义进程继承过程
线程概念
线性过程也被称为轻量过程。线性是执行操作电话的操作系统最小的单元,一般来说,一个过程包含多个线程,至少包含一个线程,也就是说,线程是整个过程的实际操作单元,该线程本身不用于系统资源,它只需要必要的基本资源,但所有属于同一进程的资源都可以在线程之间共享,同一进程中的线程可以同时执行,一个线程可以创建和摧毁另一个线程,因此,多线程中,线条异常可能导致整个多个线条异常,但是多进程不会,因为每个过程的资源都是独立的。
1、线程的基本状态
- 就绪:线程的初始状态意味着线程有所有运行的条件,等待处理器,并且逻辑上已经运行
- 运行:线程的初始状态是线程占用处理器并执行的状态
- 阻塞:线程阻塞状态是线程等待特定事件或信号数量的状态,逻辑上不能运行
2、图示

线程基本使用例
Thread简介
python提供了实现线程函数的线程类,其基本结构和参数与过程一致,如下:
结构
参数
- 目标:调用对象,通常是函数、类、进程的执行实体
- 名称:进程名称
- args:调用对象的位置参数组件
- kwargs:调用对象的字典
- 组:基本上没有使用,忽略
过程类提供的方法
- is_alive():返回过程是否被激活
- 停止进程直到进程执行完成或终止为止
- 在可重写的进程中运行的函数
- 启动进程,进程开始运行
- terminate(): 进程终止
创建线程线程
创建一个自定义Thread线程继承Thread类
三、协程编程
协程概念
坐标是轻量线程,拥有自己的注册和堆栈,协程调度切换时,保存存储库上下文并堆栈到另一个位置,切回来时,恢复预备状态,因此,共处理器可以保留最后的调用状态信息,即每次过程重入,它相当于输入先前的调用状态。编码适合IO密集的任务处理,因为连贯性是基于线性,它的呼叫是线程中的进程,是单线程操作,因此,效率略高于多线性。
asyncio的基本例子
asyncio简介
python通常使用的编码库,如asyncio,与 python的async/await结合起来,可以方便地用于编码操作。
基本使用
4.差异与关系及应用场景
区别和联系
类型 区别和联系不同点 多进程 多个任务可以同时处理。多个进程被设计为充分利用CPU性能完成多个任务。
适用于大规模计算任务(计算密集型),线程的链接是包含线程的进程。
进程至少包含一个线程, 即进程运行实体.多线程 能同时处理多个任务,线性是执行操作电话的操作系统最小的单元,被包含于进程之中。
一个线程可以共享同一进程的资源,因此使用多个线程可以大大增加资源利用,使程序更快响应。协程 多个任务可以同时处理,编码是一个轻量级线程,一个线程,
坐标处理是在线程中进行的,即线程包含坐标。
编码比线性编程略有效率,和线性编程一样,适合IO密集的任务处理。场景重复计算分类与选择的应用
计算密度-多处理/共处理-CPU利用率
计算密度是一种非常大的、集中的计算、逻辑判断类型,也被称为CPU密度,因为它主要占用CPU资源,并且当计算任务的数量与CPU核心的数量相等时,CPU最有效的时候,所以计算密度任务特别消耗CPU。
IO密集型-多线性-网络(输入/输出)
IO密度是一种输入输出操作,在计算和处理过程中需要大量的输入和输出。例如,当磁盘读取数据和输出数据非常大时,它属于IO密度类型。因为IO操作的运行时间比CPU和内存运行时间长得多,所以大部分时间任务都在等待IO操作完成,IO的特点是低 CPU 消耗,所以,IO任务越多,CPU效率越高,当然不是越多越好,有一个极限值。
相关新闻
- 2022-08-04 WPF的由来
- 2022-08-04 Win11勒索软件防护怎么打开?Win11安
- 2022-08-04 Windows系统jdk的配置
- 2022-08-04 Windows10 OneNote怎么重新登录?如何重
- 2022-08-04 超好用的 Windows 效率工具推荐
- 2022-08-04 Windows如何在CMD或PowerShell中配置代理
- 2022-08-04 powershell和cmd对比
- 2022-08-04 【QT】Windows下QT下载安装
- 2022-08-04 windows下 C++ 实现类属性的get和set方
- 2022-08-04 Win11快速助手在哪里?Win11打开快速
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
