news 2026/9/7 17:39:45

多任务的讲解

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
多任务的讲解

一.多任务和单任务的区别

1.单任务

一个个任务一次执行

2.多任务

多个任务同时执行

二.并行和并发性的区别

1.并发

同一时刻快速交替执行多个任务

2.并行

同一时刻同时执行多个任务

三.多进程

1.多进程的三大步骤

①.导包:import multiprocessing

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

③.启动进程: 进程对象名.start()

2.参数详解

1.参数解释

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

②args: 以元组的形式传递参数, 注意: 如果只有1个参数加逗号

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

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

2.os模块获取子进程id和父进程id

①子进程id:osgetpid()

②父进程id:osgetppid()

③拓展:根据id杀死进程:os.kill(pid,9)

3.拓展:获取当前进程的名字和id

①当前进程id:multiprocessing.current_process().pid

②进程名:multiprocessing.current_process().name

3.注意事项

1.多进程在调用的时候必须添加main判断保护,否则容易出现递归错误

2.多进程之间不能共享全局变量

3.主进程默认会等待所有子进程结束再结束

如何设置子进程跟着主进程结束

①子进程名.daemon = True

②子进程名.terminate()

四.多线程

1.多线程的三大步骤

①导包: import threading

②创建线程: 线程对象名 = threading.Thread(target=任务名)

③启动线程: 线程对象名.start()

2.参数详解

1.参数解释

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

②args: 以元组的形式传递参数, 注意: 如果只有1个参数加逗号

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

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

2.拓展:获取当前线程的名字和id

①当前线程id: threading.current_thread().native_id

②线程名: threading.current_thread().name

3.注意事项

1.多线程在调用的时候,不是必须添加main判断,但是建议养成好习惯

2.多线程之间可以共享全局变量

3.主线程默认会等待所有的子线程结束再结束

如何设置子线程跟着主线程结束

①子线程名.daemon = True

②子线程名.setDaemon(True)

4.Cpython中的线程只有并发,没有并行,因为受GIL影响

五.多进程和多线程的核心对比

1.区别

① 进程之间不共享全局变量

② 线程之间共享全局变量

③ 创建进程的资源开销要比创建线程的资源开销要大

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

2.关系

① 线程是依附在进程里面的,没有进程就没有线程。

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

3.精简对比

1.进程

①优点:可以用多核

②缺点:资源开销大

2.线程

①优点:资源开销小

②缺点:不能使用多核

六.多协程

1.Python中生成器

1.生成器推导式:(i for i in range(x))

2.生成器函数:函数内使用了yield关键字

3.好处

1.内存效率极高

①按需生成:数据需要时才产生,不一次性加载到内存

②适合大数据:处理GB/TB级文件或无限序列

③ 减少内存和CPU开销

2.代码简洁

①用 yield 代替复杂的状态管理

②生成器表达式语法简洁

2.Python中协程

1.Python中的协程从生成器发展来的

2.三要素

①async def 定义函数

②await 指定等待处

③asyncio.run()

七.进程/线程/协程对比

1.完整对比

2.应用场景

3.一句话示例

①协程:单线程魔术师,手里抛接多个球(I/O等待时换件事做)

②线程:多个魔术师,但只有一个能表演(GIL限制)

③进程:多个魔术师,各自独立表演 (完全独立)

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

合并两个有序链表:双指针迭代法实现(C++)

一、问题描述将两个升序链表合并为一个新的升序链表并返回,新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:l1 [1,2,4],l2 [1,3,4],输出:[1,1,2,3,4,4]输入:l1 [],l…

作者头像 李华
网站建设 2026/9/7 4:36:42

CVPR 2025最佳论文突破:DepthCrafter实现开放世界视频深度序列生成新范式

CVPR 2025最佳论文突破:DepthCrafter实现开放世界视频深度序列生成新范式 【免费下载链接】DepthCrafter DepthCrafter是一款开源工具,能为开放世界视频生成时间一致性强、细节丰富的长深度序列,无需相机姿态或光流等额外信息。助力视频深度估…

作者头像 李华
网站建设 2026/9/7 18:47:01

MEET 2026 | 荣获双奖,AI 开源点亮智能未来

12 月 10 日,以「共生无界,智启未来」为主题的 MEET 2026 智能未来大会在北京举行。承袭 MEET 系列年度行业观察的视角,聚焦以 AI 为代表的智能科技如何穿透产业、学科与场景边界,探讨前沿技术进展与产业落地新动向。大会邀请清华…

作者头像 李华
网站建设 2026/9/7 10:32:04

Wan2.2-T2V-A14B支持自动字幕嵌入吗?多语种翻译生成测试

Wan2.2-T2V-A14B是否支持自动字幕嵌入?多语种翻译能力实测解析 在短视频出海、跨国品牌营销日益频繁的今天,内容本地化的效率直接决定了市场响应速度。一个中国团队制作的广告片,如果需要投放到欧美、东南亚甚至拉美地区,传统流程…

作者头像 李华
网站建设 2026/9/7 0:23:35

Wan2.2-T2V-A14B与Sora的技术路线差异比较

Wan2.2-T2V-A14B与Sora的技术路线差异比较 在生成式AI的浪潮中,文本到视频(Text-to-Video, T2V)正从“能出画面”迈向“可商用”的关键转折点。过去一年里,我们见证了两个极具代表性的技术里程碑:阿里巴巴推出的 Wan2.…

作者头像 李华
网站建设 2026/9/6 21:14:01

Java两种代理模式详解

如有错误欢迎指出 是jdk动态代理是从一步步开始写完特性/维度JDK 动态代理CGLIB 动态代理是否需要接口✅ 需要接口❌ 不需要接口(可代理普通类)代理原理基于反射实现接口方法的代理继承目标类并重写方法,基于 ASM 字节码操作代理类结构生成实…

作者头像 李华