当前位置:首页>python>【Python口袋计划】进程与线程(二)

【Python口袋计划】进程与线程(二)

  • 2026-08-16 14:25:22
【Python口袋计划】进程与线程(二)

大家好,我是小白太白。

上期内容分享了进程与线程的区别,以及什么是线程,没有看过的小伙伴可以在该系列合集中查看。

进程与线程内容主要从以下方面分享,这一期将继续分享进程有关的知识点,即本期内容分享第 3~4 部分

  1. 进程与线程区别

  2. 线程理解及实践

  3. 进程理解及实践

  4. 使用场景的选择

01

进程理解及实践

进程的核心特点

  • 资源独立:每个进程有自己的内存空间、文件句柄等,进程间不共享资源

  • 开销大:创建、切换进程的成本远高于线程(需分配独立内存);

  • 并行执行:每个进程有自己的 GIL(解释见上期内容),可利用多 CPU 核心实现真并行,适合 CPU 密集型任务。

同样采取实例来帮助理解进程的作用。(建议亲手打下代码并跑下哦)

实例1:基础多进程(执行 CPU 密集型任务)

多进程利用多 CPU 核心并行计算,效率显著高于单进程,体现了进程在 CPU 密集型任务中的优势。

实例2:进程间通信(IPC)—— 队列(Queue)

进程间不共享全局变量,需通过队列、管道、共享内存等方式通信,其中 Queue是最常用的方式:

实例3: 进程池(Pool):高效管理进程

进程池顾名思义就是一个池子,里面有很多可以直接使用的进程(提前申请好了)。你只需要关注进程池操作就可以,无需关注它如何具体管理一个个单一进程。

  • 当进程池内部进程数大于任务数时,每一个任务均可分配到一个进程使用

  • 当进程池内部进程数小于任务数时,超出的任务需要等待已得到进程的任务释放进程使用权后才可使用进程,这一操作进程池自动处理

当需要创建大量进程时,直接创建进程会导致资源浪费。Python3.2 + 提供了 concurrent.futures 模块,封装了原有的线程池和进程池,使用 with 语句(与文件操作使用的with是一样的)自动管理池的生命周期,使用更简洁:

02

使用场景的选择

那么什么候使用线程,什么时候使用进程呢?主要是从资源占用以及执行效率两方面进行考虑的。

用线程的场景(IO 密集型任务)

  • 网络请求(如爬虫、接口调用);

  • 文件读写(如日志写入、大文件读取);

  • 用户界面交互(如 GUI 程序的后台任务,避免界面卡死)。

用进程的场景(CPU 密集型任务)

  • 数学计算(如矩阵运算、数据挖掘);

  • 大数据处理(如批量数据清洗、机器学习训练);

  • 需要充分利用多 CPU 核心的任务。

总而言之,一句话概括就是:如果主要是读写文件/数据就选线程否则(侧重计算或并行效率)就选进程


好了,关于进程与线程相关的分享暂时告一段落了。该内容重在理解是什么,如何选择,至于后续具体使用可以随时查阅。

另外,如果你是计算机专业且还未工作的学生党,那么这些内容(与具体编程语言解耦的理解)是要求熟练掌握,因为面试必考,且工作中编码一定会用到的。

下期再见啦


PS:本人能力有限,文章内容存在问题或其他需要改进的点,欢迎留言评论,帮助我积极改进以输出更加优质的内容回馈各位小伙伴,谢谢~

最新文章

随机文章