现在,大多数 CPU 制造商都在创建多核 CPU。连手机都带多个内核!Python 线程不能使用这些内核,因为全局解释器锁定。从 Python 2.6 开始 multiprocessing
,添加了模块,让您充分利用计算机上的所有内核。
在这篇文章中,您将了解以下主题:
- 使用流程的优点
- 使用流程的缺点
- 创建流程
multiprocessing
- 子分类
Process
- 创建流程池
本文不是多处理的全面概述。多处理和并发一般的主题更适合在它自己的书。如果需要,您始终可以 multiprocessing
查看模块的文档:
现在,让我们开始吧!
使用流程的优点
使用流程有几个优点:
- 进程使用单独的内存空间
- 与线程相比,代码可以更直接
- 使用多个 CPU/内核
- 避免全局解释器锁 (GIL)
- 子进程可以被杀死(与线程不同)
multiprocessing
该模块的接口类似于threading.Thread
- 适合 CPU 绑定处理(加密、二进制搜索、矩阵乘法)
现在,让我们来看看流程的一些缺点!
使用流程的缺点
使用流程也有几个缺点:
- 进程间通信更为复杂
- 内存占用量大于线程
现在,让我们学习如何使用 Python 创建流程!
创建流程multiprocessing
multiprocessing
该模块旨在模拟类 threading.Thread
的工作方式。
下面是使用模块 multiprocessing
的示例:
Python
Ⅹ
18
1
导入多处理
2
导入随机
3
导入时间
4
def辅助工作(名称str->无:
打印(f’启动工作人员 [名称])
6
worker_time随机的。选择(范围(15))
7
时间。睡眠(worker_time)
8
打印(f'[名称] 工作人员完成在 [worker_time] 秒))
9
如果__name____name__"__main__":
10
流程|
11
i在范围range(5):
过程=多处理。过程(目标=工作人员,
13
args=(f'computer_[i]',))
14
进程。附加(过程)
15
过程。开始()
16
17
用于流程中的procprocesses:
18
proc.加入()