本文将和大家一起探讨python的多进程并发编程,使用内置基本库multiprocessing来实现并发
,先通过官方来简单使用这个模块。先打好基础,能够有个基本的用法与认知,后续文章,我们再进行详细使用。
本文为python并发编程的第四篇,上一篇文章地址如下:
python:并发编程(三)_Lion King的博客-CSDN博客
下一篇文章地址如下:
(暂无)
官方文档:multiprocessing --- 基于进程的并行 — Python 3.11.4 文档
基于官方代码,我加了“while True:”这个无线循环,以方便观察进程的情况。
这段代码创建了一个无限循环,在每次循环中使用multiprocessing
模块的进程池来执行函数f(x)
。具体步骤如下:
(1)导入multiprocessing
模块的Pool
类。
(2)定义了一个函数f(x)
,用于计算传入参数x
的平方。
(3)在if __name__ == '__main__':
条件下创建一个进程池p
,并指定进程池的大小为5。
(4)使用p.map()
方法并行地对给定的迭代对象[1, 2, 3]
中的每个元素应用函数f(x)
,并返回结果。
(5)打印输出结果。
(6)进入无限循环。
from multiprocessing import Pool
def f(x):
return x*x
if __name__ == '__main__':
while True:
with Pool(5) as p:
print(p.map(f, [1, 2, 3]))
运行前的进程情况:
运行时的进程情况:
通过上述实验,我们知道,这个程序在不断创建5个进程并进行销毁,红色部分是被销毁的5个进程,绿色部分是新生成的5个进程。通过Pycharm运行脚本时,会先生成python.exe子进程,这个子进程又会生成python.exe子进程和conhost.exe子进程,而第二个python.exe子进程又会生成5个子进程,来执行任务。