python 多进程的 Process 和 Queue 的使用
Question
from multiprocessing import Process, Queue 解释下这个多进程
Answer
from multiprocessing import Process, Queue
是用于多进程处理的模块。
详细解释
- 多进程:
multiprocessing
模块提供了类似于threading
模块的 API,但它使用的是进程而不是线程。每个进程都有自己的 Python 解释器和内存空间,因此可以避免全局解释器锁(GIL)带来的问题,适用于 CPU 密集型任务。 - Process:
Process
类用于创建一个新的进程,并可以指定目标函数和参数。 - Queue:
Queue
类用于在不同进程之间传递数据,它是一个线程和进程安全的队列。
要真正体现多进程的优越性,特别是在 CPU 密集型任务中的优势,我们可以通过并行执行多个任务来展示。下面是一个计算斐波那契数列的示例,通过多进程并行计算多个斐波那契数列的值,展示多进程的效率提升。
示例
点击查看示例
from multiprocessing import Process, Queue import time def fibonacci(n): if n <= 1: return n else: return fibonacci(n-1) + fibonacci(n-2) def compute_fibonacci(n, queue): result = fibonacci(n) queue.put((n, result)) if __name__ == "__main__": numbers = [35, 36, 37, 38] # 选择较大的斐波那契数列值 processes = [] queue = Queue() start_time = time.time() # 为每个计算创建一个进程 for number in numbers: p = Process(target=compute_fibonacci, args=(number, queue)) processes.append(p) p.start() # 等待所有进程结束 for p in processes: p.join() # 输出结果 while not queue.empty(): number, result = queue.get() print(f"Fibonacci of {number} is {result}") end_time = time.time() print(f"Total time taken with multiprocessing: {end_time - start_time:.2f} seconds")
优势展示
- 并行处理:多进程允许将多个计算任务并行运行在不同的 CPU 核心上,这对于计算密集型任务非常有利。
- 时间效率:在计算密集型任务中,多个进程可以显著减少总的计算时间,因为多个进程可以同时运行,而不是顺序运行。
总结
通过这个示例,你可以看到多进程在处理计算密集型任务时的优势。尽管斐波那契数列的计算量相对较小,但在实际应用中,多进程可以显著提升处理速度,尤其是在有多个 CPU 核心可用的情况下。
分类:
python
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现