multiprocessing怎么用于多线程
时间: 2024-12-22 11:15:38 浏览: 2
`multiprocessing` 是 Python 标准库中的一个模块,它提供了一种在单台机器上创建并管理多个进程的功能,而不是多线程。这是因为 Python 的全局解释器锁(Global Interpreter Lock, GIL)会限制在同一时间只有一个线程能够执行Python字节码,即使在多核处理器上也是如此。因此,如果你需要充分利用多核,或者想要执行无 GIL 的计算密集型任务,`multiprocessing` 是更好的选择。
`multiprocessing` 提供了以下几个核心类来创建和管理子进程:
1. **Process**: 这是一个类,代表一个单独的、可执行的进程。你可以通过实例化这个类,并传入一个函数作为目标来启动一个新的进程。
2. **Pool**: `Pool` 类允许你批量地提交工作到进程池,然后接收结果。这有助于简化复杂的并发任务。
使用示例:
```python
from multiprocessing import Process
def worker(num):
""" 子进程执行的函数 """
print(f"Worker {num} started")
if __name__ == "__main__":
# 创建进程列表
processes = [Process(target=worker, args=(i,)) for i in range(5)]
# 启动所有进程
for p in processes:
p.start()
# 等待所有进程完成
for p in processes:
p.join()
```
在这个例子中,我们创建了5个进程,每个进程都运行 `worker` 函数,但它们是完全独立的,互不影响,也不会受到 GIL 的限制。
阅读全文