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

你的代码为何高并发就卡死?进程、线程、协程选对的秘密!

在进入正题之前,我们先说一下并行和并发的区别:

(感觉是同时): 同一刻快速交替执行多个任务

(真的同时): 同一刻真正同时执行多个任务

一,进程

进程有三大步骤,分别是:《1》导包: importmultiprocessing

《2》创建进程: 进程对象名 = multiprocessing.Process(target=任务名)

《3》启动进程:进程对象名.start()

创建进程中的几个参数解释:《1》args: 以元组的形式传递参数, 注意: 如果只有1个参数加逗号

《2》kwargs: 以字典形式传递参数, 注意: 字典的key必须和任务中形参名一致

《3》name: 默认进程名称是Process-1,Process-2...,也可以直接指定

《4》target: 指定携带任务的函数名, 注意: 没有括号

二,线程

线程有三大步骤,分别是:《1》导包: importthreading

《2》创建线程: 进程对象名 = multiprocessing.Thread(target=任务名)

《3》启动线程:线程对象名.start()

创建线程中的几个参数解释:《1》args: 以元组的形式传递参数, 注意: 如果只有1个参数加逗号

《2》kwargs: 以字典形式传递参数, 注意: 字典的key必须和任务中形参名一致

《3》name: 默认线程名称是Thread-1,Thread-2...,也可以直接指定

《4》target: 指定携带任务的函数名, 注意: 没有括号

三,进程和线程

区别:

《1》进程之间不共享全局变量

《2》线程之间共享全局变量

《3》 创建进程的资源开销要比创建线程的资源开销要大

《4》进程是操作系统资源分配的最小单位,线程是CPU调度的最小单位

关系:

《1》线程是依附在进程里面的,没有进程就没有线程。

《2》 一个进程默认提供一条线程,进程可以创建多个线程。

四.协程

python中的协程是从生成器发展来的

协程的三要素:async def 定义函数

await 指定等待处

asyncio.run()

注:最后提示一下,我们python中的生成器推导式:(i for i in range(x))

生成器函数就是在函数内使用了yield关键字

综上,我们如何选择进程线程协程呢?如果是CPU密集型主要是数学计算我们使用进程;如果是简单的后台任务,简单易用我们用线程;如果是I/O密集型,主要是网络请求或者文件读写,我们用协程。一句话总结,进程真正同时做事,线程看起来同时做事,协程单线程内切换做事。

http://www.cnnetsun.cn/news/27328.html

相关文章:

  • 数据库连接池监控最佳实践:用 Prometheus + Grafana 打造可视化监控体系
  • Windows验机
  • 别让孩子视力提早“透支” ,这份护眼指南请收好
  • 儿童青少年近视干预科学指引,破解家长近视防控焦虑
  • 解析 .NET 核心基石:CTS、CLS 与 CLR 的核心价值与协同作用
  • Selinux权限的检测
  • 常见报错org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): org.example.dem
  • 甲骨文AI投资支出激增致股价创24年最大跌幅
  • TinyMCE4粘贴word超链接自动解析域名
  • TinyMCE6处理微信公众号音频视频嵌入
  • 昇腾 Ascend 自定义算子开发全攻略:从 TBE DSL 到 AICPU,打通 AI 加速最后一公里
  • 当电机开始“唱歌“:NVH工程师的降噪日常
  • AI界的“经济适用男“!80亿参数小模型完胜GPT-5,成本降低70%,CSDN程序员必藏的智能调度方案
  • FPGA教程系列-Vivado Aurora 8B/10B 例程解读
  • 227827827
  • MCU的启动流程你了解么?
  • 逻辑回归(Logistic Regression)进行多分类的实战
  • RNN(循环神经网络)原理
  • 人机协同重构创作生态——生成式AI赋能内容产业的变革与思考
  • Java 小白求职者在互联网大厂的面试实录:从 Spring Boot 到微服务架构
  • V助手舆情分析智能体:重塑舆情分析,从“人找信息”到“信息为人”
  • 连接2026:十款远程控制软件真实力横评与选择指南
  • 计算机毕业设计springboot基于Spark++Vue.js的学生管理系统 Spark+Vue 高校学生综合信息管理平台 基于 SpringBoot+Spark+Vue 的全链路学生事务中心
  • JavaScript 集合操作的哈希碰撞:攻击者如何利用特殊 Key 导致 Map/Set 性能降级到 O(N)
  • 为什么 C盘空间会莫名其妙减少(即使没装新软件)?
  • 17、深入理解 Linux 文件系统机制与结构
  • 29、Linux 软件使用与故障排除指南
  • 从入门到转行:网络安全自学与跳槽的终极建议
  • 网络安全小白自学之路,别拜师了,求人不如求己_网络安全小白怎么自学
  • 从系统运维到网络安全工程师,8个月转行真实经验分享!