在当今多核CPU普及的时代,利用Python多进程技术可以显著提升程序运行效率,特别是在处理CPU密集型任务时。本教程将带你从零开始学习如何使用Python的multiprocessing模块实现并行计算,即使是编程小白也能轻松上手!
Python由于GIL(全局解释器锁)的存在,多线程在CPU密集型任务中无法真正并行执行。而多进程可以绕过GIL限制,每个进程拥有独立的Python解释器和内存空间,从而实现真正的并行计算。

让我们从最简单的例子开始。下面的代码创建两个进程,分别打印不同的信息:
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系统上,它可以防止子进程无限递归创建。
当需要管理大量进程时,手动创建和管理会很麻烦。这时我们可以使用进程池,它能自动管理进程的创建和销毁,提高资源利用率。
import multiprocessingimport timedef calculate_square(n): """计算数字的平方""" time.sleep(1) # 模拟耗时操作 return n * nif __name__ == "__main__": numbers = [1, 2, 3, 4, 5, 6, 7, 8] # 创建进程池,指定4个工作进程 with multiprocessing.Pool(processes=4) as pool: results = pool.map(calculate_square, numbers) print(f"计算结果: {results}")在这个例子中,我们使用了Pool.map()方法,它会自动将任务分配给进程池中的工作进程,并收集结果。这是实现并行计算的常用模式。
有时候我们需要在不同进程之间共享数据或传递信息。Python提供了多种进程间通信机制,如Queue、Pipe等。
import multiprocessingdef producer(queue): """生产者:向队列添加数据""" for i in range(5): queue.put(f"数据-{i}") queue.put(None) # 发送结束信号def consumer(queue): """消费者:从队列读取数据""" while True: item = queue.get() if item is None: break print(f"消费: {item}")if __name__ == "__main__": # 创建队列 queue = multiprocessing.Queue() # 创建生产者和消费者进程 p1 = multiprocessing.Process(target=producer, args=(queue,)) p2 = multiprocessing.Process(target=consumer, args=(queue,)) p1.start() p2.start() p1.join() p2.join()让我们通过一个实际例子来对比单进程和多进程的性能差异:
import multiprocessingimport timedef cpu_bound_task(n): """CPU密集型任务:计算大数的平方根多次""" total = 0 for i in range(n): total += i ** 0.5 return total# 单进程版本def single_process(): start_time = time.time() results = [cpu_bound_task(1000000) for _ in range(4)] end_time = time.time() print(f"单进程耗时: {end_time - start_time:.2f} 秒")# 多进程版本def multi_process(): start_time = time.time() with multiprocessing.Pool(processes=4) as pool: results = pool.map(cpu_bound_task, [1000000] * 4) end_time = time.time() print(f"多进程耗时: {end_time - start_time:.2f} 秒")if __name__ == "__main__": single_process() multi_process()在多核CPU上运行这个程序,你会发现多进程版本的速度明显快于单进程版本,这充分体现了并行计算的优势。
if __name__ == "__main__":保护asyncio或线程可能更合适通过本教程,你已经掌握了Python多进程编程的基础知识,包括进程创建、进程池使用、进程间通信以及性能优化。记住,multiprocessing教程的核心思想是:合理利用多核CPU资源,通过并行计算提升程序性能。
现在你可以尝试将这些技术应用到自己的项目中,让程序运行得更快、更高效!
本文由主机测评网于2025-12-23发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://www.vpshk.cn/20251211720.html