当前位置: 首页 > news >正文

python语言基础-6 多任务-6.0 基本概念

声明:本内容非盈利性质,也不支持任何组织或个人将其用作盈利用途。本内容来源于参考书或网站,会尽量附上原文链接,并鼓励大家看原文。侵删。

6.0 基本概念

6.0.1 多任务的场景

前面我们学习的代码示例通常都是单任务的,即每个步骤之间都是顺序执行的。但实际中也有很多时候是多任务的,例如:生产汽车,各部分零件同时生产,最后集中在一起组装。这个过程中不会按次序生产轮子、发动机、底盘、外壳及其他零部件,而是这些零件同时开工生产,有的事件之间有先后次序,有的事件之间是无关的。

完成一个任务的执行平台称为流水线。一个流水线只能按次序完成一个任务的流程,那么多条任务同时执行就需要多条流水线同时开工。

6.0.2 并行与并发

并行与并发是执行多任务的两种方式。

并行:指多条任务同时执行。就像多条生产线同时开工生产。计算型的任务由于多数中间过程与结果之间存在严格的次序关系,通常使用并行。

并发:指多条任务同时发起,并不严格同时执行。就像一个工人来回切换地执行多条流水线。IO型的任务通常使用并发,使较慢IO任务让出资源,优先完成较快的任务。

6.0.3 进程、线程与协程

根据任务拆解的不同层次,任务下可能有一个到多个子任务,子任务下也可以有一个到多个子任务。而执行任务的流水线也是像这样分层次的。计算机执行任务的流水线就是进程、线程与协程(python中使用的),它们就是不同层次的流水线。

进程(Process):进程是计算机中的一种计算资源分配单位(即执行任务的流水线)。计算机中一个应用程序的启动运行,至少占用一个进程。典型的比如网络应用中,一个端口号通过对应一个进程号。在C和java中执行一个程序通常以main函数为入口,因此main函数通常也是开启进程的标志。

线程(Threading):线程是进程下进一步划分的计算资源分配单位(即执行任务的流水线)。运行一个进程时,进程下至少包含一个线程,并且如果进程下只有一个线程时,这个线程通常就是主线程main。多线程的情况比如:我们运行一个程序,将网络上的文件保存到本地并添加一条记录到本地记录表中,就可以让主线程保存文件的同时,再开启一个线程执行将记录保存到记录表的操作。

协程(Coroutine):被称为微线程,是单个线程内的上下文切换执行技术,其实就是通过一个线程实现代码块相互切换执行。协程是python中的一种机制,C和java中是没有的。

由进程、线程与协程的定义可知,进程与线程是可以被调度来做并行或并发的,而协程只能调度做并发而不能做并行。

http://www.dtcms.com/a/548624.html

相关文章:

  • 四川省工程建设信息官方网站郴州做网站ku0735
  • Kubernetes 资源管理总结
  • 【源码+数据集+训练教程】基于YOLOv8+Flask+Layui的智能垃圾分类检测系统
  • X_T 转换为 3DXML 的技术指南及迪威模型网在线转换推荐
  • NumPy 2.x 完全指南【四十二】线性代数之向量运算
  • 制作网站要求com网站注册域名
  • 网站建设教程搭建芽嘱湖南岚鸿信赖营销单页网站模板
  • 【RDMA】mlx5dev mlx5dv_devx 接口
  • 【墨铺网教程】一台电脑加入多个局域网,让电脑做上传下载主力又当存储盘
  • 变身智能车载台,AORO P9000U三防平板赋能工业数字化升级
  • 安全登录多人共用的机密电脑:基于动态凭证与会话隔离的解决方案
  • 全球首款卷轴屏电脑发布!ToDesk+扩展屏成平替方案
  • 在Lua用luasql-sqlite3库访问SQLite数据库
  • 代码随想录第51 52天 | 图论-岛屿问题汇总
  • 分布式存储:Ceph、GlusterFS、MinIO架构与部署
  • 机械外协加工网最新订单移动网站如何优化排名
  • 11 种方法解决小米/米手机无法通过 USB 连接电脑的问题
  • Ubuntu:设置程序开机自启动
  • 化妆品品牌网站如何做wordpress pdf文章
  • vue 网站导航栏
  • 如何提高 IPA 安全性 多工具组合打造可复用的 iOS 加固与反编译防护体系(IPA 安全 iOS 加固 无源码混淆 Ipa Guard 实战)
  • 上海市工程建设交易中心网站深圳公司广告片制作
  • FreeRTOS 学习:(三)HAL库、标准库 和 FreeRTOS 的关联性,简述
  • 使用 Tauri + Rust 构建跨平台桌面应用:前端技术的新边界
  • 如何录屏?【图文详解】免费录屏软件?电脑如何录屏?电脑怎么录屏?
  • 深入Rust:Box、Rc、Arc智能指针机制解析与实践指南
  • 【项目实践】公寓租赁项目(十):基于SpringBoot登录管理接口开发
  • Java1030 abstract 继承
  • 第六部分:VTK进阶(第180章 重采样与插值)
  • 聊城做网站推广哪家好android sdk