在现代软件开发中,充分利用多核CPU提升程序性能变得越来越重要。Python虽然有GIL(全局解释器锁)限制线程并行执行,但通过多进程编程可以绕过这一限制,实现真正的并行计算。本教程将带你从零开始学习Python多进程编程,即使你是编程小白也能轻松上手!
Python的GIL使得同一时刻只有一个线程能执行Python字节码,因此对于CPU密集型任务,使用多线程并不能提升性能。而多进程则为每个进程分配独立的Python解释器和内存空间,从而真正实现并行处理。

Python标准库中的 multiprocessing 模块是进行多进程编程的核心工具。它提供了创建和管理进程的高级接口,用法与 threading 模块非常相似。
下面是一个最基础的多进程示例:
import multiprocessingimport timedef worker(name): print(f'进程 {name} 开始执行') time.sleep(2) print(f'进程 {name} 执行完毕')if __name__ == '__main__': # 创建两个进程 p1 = multiprocessing.Process(target=worker, args=('Worker-1',)) p2 = multiprocessing.Process(target=worker, args=('Worker-2',)) # 启动进程 p1.start() p2.start() # 等待进程结束 p1.join() p2.join() print('所有进程已完成')注意:必须将进程创建和启动代码放在 if __name__ == '__main__': 块中,这是为了防止在Windows系统下子进程无限递归创建。
当需要管理大量进程时,使用 Pool 更加高效。它会自动管理进程的创建和销毁。
from multiprocessing import Poolimport osimport timedef square(x): pid = os.getpid() print(f'进程 {pid} 正在计算 {x} 的平方') time.sleep(1) return x * xif __name__ == '__main__': numbers = [1, 2, 3, 4, 5] # 创建包含4个进程的进程池 with Pool(processes=4) as pool: results = pool.map(square, numbers) print('计算结果:', results)在并行计算中,不同进程之间往往需要交换数据。Python的 multiprocessing 模块提供了多种进程间通信机制,包括 Queue、Pipe 和共享内存等。
from multiprocessing import Process, Queuedef producer(q): for i in range(5): q.put(f'数据-{i}') q.put(None) # 发送结束信号def consumer(q): while True: item = q.get() if item is None: break print(f'消费: {item}')if __name__ == '__main__': queue = Queue() p1 = Process(target=producer, args=(queue,)) p2 = Process(target=consumer, args=(queue,)) p1.start() p2.start() p1.join() p2.join()with 语句管理 Pool,确保资源正确释放。multiprocessing.log_to_stderr() 输出日志。通过本教程,你已经掌握了Python中多进程编程的基本概念和常用方法。无论是使用 Process 直接创建进程,还是使用 Pool 管理进程池,亦或是通过 Queue 实现进程间通信,你都可以根据实际需求选择合适的方案来提升程序性能。记住,在处理并行计算任务时,multiprocessing模块是你最强大的武器之一!
现在就动手试试吧!编写你的第一个多进程程序,体验真正的并行加速!
本文由主机测评网于2025-12-21发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://vpshk.cn/20251210883.html