news 2026/5/2 11:46:10

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
你的代码为何高并发就卡死?进程、线程、协程选对的秘密!

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

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

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

一,进程

进程有三大步骤,分别是:《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密集型,主要是网络请求或者文件读写,我们用协程。一句话总结,进程真正同时做事,线程看起来同时做事,协程单线程内切换做事。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/30 14:58:55

孩子已经近视了,怎样才能控制度数不再加深?

孩子近视了,很多家长最担心的就是度数每年都在涨。作为一个长期关注儿童视力健康的博主,今天我要分享一些真正有效的科学防控方法,帮助孩子们控制近视度数加深。在深入了解控制方法前,我们先要明白近视加深的根本原因。当孩子长时…

作者头像 李华
网站建设 2026/4/28 2:33:37

全基因组重测序上游分析流程--随笔15

全基因组重测序上游分析流程|从软件部署到变异检测,超细致实操指南 作为科研新手,第一次上手全基因组重测序数据处理时,我踩过不少软件安装的坑、碰过参数设置的雷。如今整理出这份超详细流程,从前期准备到最终变异过…

作者头像 李华
网站建设 2026/5/1 7:23:16

中间件开发与生命周期管理

目录中间件开发与生命周期管理1. 引言:中间件的重要性 {#引言}2. 中间件的基本概念与原理 {#基本概念}2.1 中间件的定义与分类2.2 中间件的核心特征3. 中间件的生命周期模型 {#生命周期模型}3.1 生命周期的五个阶段3.2 状态转移矩阵3.3 生命周期时长模型4. 中间件开…

作者头像 李华
网站建设 2026/5/1 8:28:58

2026大专建筑工程必看!这些证书让你找工作不踩雷!

各位建工专业的同学们,2026年的建筑行业正在经历深刻转型。“大干快上”的时代过去了,现在是拼技术、拼管理、拼合规的时代。作为大专生,我们学历上不占优,但恰恰可以通过实操技能和专业证书,在施工现场打出一片天。今…

作者头像 李华
网站建设 2026/5/1 8:32:07

《UGC工具的能力梯度解锁指南》

很多产品陷入“功能越多越强大”的误区,却忽略了用户在碎片化场景下的核心诉求—当一位博主在通勤途中想用手机编辑图文时,过多的排版选项会成为认知负担,而过于简化的功能又无法满足专业表达需求。这就需要建立“感知负荷拆解模型”,将复杂功能拆解为“基础必选”“进阶可…

作者头像 李华