python中使用multiprocessing模块可通过多进程提升性能,尤其适合计算密集型任务。1. 创建并启动进程使用process类,通过target指定函数,start()启动,join()确保主进程等待;2. 多个进程并发执行可循环创建多个process实例并启动,适用于任务相互独立的情况;3. 使用pool进程池管理大量进程,常见方法有map、apply_async和starmap,with pool(...)推荐写法自动管理资源;4. 进程间通信通过queue、pipe、value/array和manager实现,支持数据传递与共享。掌握这些内容即可灵活优化程序性能。

在Python中,使用多进程(multiprocessing)是提升程序性能、充分利用多核CPU的有效方式。尤其当你需要处理大量计算密集型任务时,多进程比多线程更合适,因为它是绕过GIL(全局解释器锁)限制的一种手段。

下面我们就来看看如何在Python中使用multiprocessing模块进行多进程编程。
1. 创建并启动一个进程
最基础的用法就是通过Process类来创建一个新的进程。和threading.Thread类似,但不同的是每个进程拥有独立的内存空间。
立即学习“Python免费学习笔记(深入)”;

from multiprocessing import Process
import os
def show_pid():
print(f"当前进程ID: {os.getpid()}")
if __name__ == "__main__":
p = Process(target=show_pid)
p.start()
p.join()-
target:指定要运行的函数; -
start():启动子进程; -
join():等待子进程执行完毕再继续主进程;
小提示:如果你不加join(),主进程可能在子进程还没执行完就结束了,导致输出不全或看不到结果。
2. 多个进程并发执行
实际应用中,我们往往需要同时运行多个进程来处理不同的任务。可以通过循环创建多个Process实例,并依次启动它们。

processes = []
for i in range(4):
p = Process(target=show_pid)
processes.append(p)
p.start()
for p in processes:
p.join()- 启动多个进程后记得都调用
join(); - 如果不控制顺序,所有进程会“几乎”同时开始执行;
- 这种方式适合任务之间相互独立的情况。
3. 使用进程池(Pool)管理大量进程
当你需要处理几十甚至上百个任务时,手动管理每个进程效率太低,这时候应该使用Pool进程池。
免费 盛世企业网站管理系统(SnSee)系统完全免费使用,无任何功能模块使用限制,在使用过程中如遇到相关问题可以去官方论坛参与讨论。开源 系统Web代码完全开源,在您使用过程中可以根据自已实际情况加以调整或修改,完全可以满足您的需求。强大且灵活 独创的多语言功能,可以直接在后台自由设定语言版本,其语言版本不限数量,可根据自已需要进行任意设置;系统各模块可在后台自由设置及开启;强大且适用的后台管理支
from multiprocessing import Pool
def square(x):
return x * x
if __name__ == "__main__":
with Pool(4) as pool: # 启动4个进程
results = pool.map(square, range(10))
print(results)常见方法:
-
map(func, iterable):将可迭代对象分发给多个进程; -
apply_async(func[, args]):异步执行函数; -
starmap():支持传入多个参数的map版本;
注意:
with Pool(...)是推荐写法,它能自动关闭资源,避免忘记调用pool.close()和pool.join()。
4. 进程间通信与数据共享
由于每个进程都有自己独立的内存空间,所以不能像多线程那样直接共享变量。但multiprocessing提供了一些机制来实现进程间通信(IPC):
- Queue:安全的队列,用于传递数据;
- Pipe:点对点通信,适用于两个进程;
- Value / Array:共享内存,适用于少量数据;
- Manager:更高级的共享方式,支持列表、字典等复杂结构。
例如使用Queue:
from multiprocessing import Process, Queue
def put_data(q):
q.put("Hello from child")
def get_data(q):
print(q.get())
if __name__ == "__main__":
q = Queue()
p1 = Process(target=put_data, args=(q,))
p2 = Process(target=get_data, args=(q,))
p1.start()
p2.start()
p1.join()
p2.join()基本上就这些。掌握好这些内容,你就可以在Python中灵活地使用多进程来优化你的程序了。虽然看起来有点复杂,但只要理解了基本逻辑和适用场景,用起来其实并不难。









