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模块进行多进程编程。
最基础的用法就是通过Process类来创建一个新的进程。和threading.Thread类似,但不同的是每个进程拥有独立的内存空间。
立即进入“豆包AI人工智官网入口”;
立即学习“豆包AI人工智能在线问答入口”;

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(),主进程可能在子进程还没执行完就结束了,导致输出不全或看不到结果。
实际应用中,我们往往需要同时运行多个进程来处理不同的任务。可以通过循环创建多个Process实例,并依次启动它们。

processes = []
for i in range(4):
p = Process(target=show_pid)
processes.append(p)
p.start()
for p in processes:
p.join()join();当你需要处理几十甚至上百个任务时,手动管理每个进程效率太低,这时候应该使用Pool进程池。
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()。
由于每个进程都有自己独立的内存空间,所以不能像多线程那样直接共享变量。但multiprocessing提供了一些机制来实现进程间通信(IPC):
例如使用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中灵活地使用多进程来优化你的程序了。虽然看起来有点复杂,但只要理解了基本逻辑和适用场景,用起来其实并不难。
以上就是Python中如何使用多进程?multiprocessing详解的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号