python多进程实例
时间: 2024-08-14 14:01:17 浏览: 63
Python中的多进程模块`multiprocessing`允许你在单台机器上创建并管理多个独立的并发进程。它的基本原理是利用操作系统提供的API,如系统调用fork()来创建新进程。
以下是一个简单的多进程实例:
```python
import multiprocessing
# 定义一个函数作为进程的任务
def worker(name):
print(f"Worker {name} is running.")
if __name__ == "__main__":
# 创建进程池
pool = multiprocessing.Pool(processes=4) # 这里可以指定进程的数量
# 将任务提交给进程池
jobs = [pool.apply_async(worker, args=(i,)) for i in range(5)] # 使用apply_async避免阻塞主线程
# 等待所有任务完成
for job in jobs:
job.get()
# 关闭进程池
pool.close()
pool.join()
```
在这个例子中,我们创建了一个包含4个进程的进程池,然后提交了5个工作到这个池子中。每个worker函数会打印出它的名字,主程序不会等待它们全部执行完就继续往下走。
相关问题
python 多进程实例
下面是一个使用Python多进程的简单实例:
```python
import multiprocessing
import time
def task(num):
print(f"进程 {num} 开始")
time.sleep(1)
print(f"进程 {num} 结束")
# 创建多个进程
processes = []
for i in range(5):
p = multiprocessing.Process(target=task, args=(i,))
processes.append(p)
# 启动所有进程
for process in processes:
process.start()
# 等待所有进程执行完毕
for process in processes:
process.join()
print("所有进程执行完毕")
```
以上代码创建了5个进程,每个进程执行task函数,打印进程开始和结束的信息。每个进程执行任务前暂停1秒,以模拟一些耗时操作。主进程通过调用join方法等待所有进程执行完毕,最后输出"所有进程执行完毕"。
与多线程不同的是,多进程可以实现真正的并行执行,因为每个进程拥有独立的Python解释器和内存空间。在某些情况下,多进程可以更好地利用多核处理器的优势。但需要注意的是,创建和管理多个进程的开销比创建和管理多个线程的开销更高。
希望这个多进程的示例能帮助到你!
python 多进程并行实例
在Python中,多进程并行是一种利用`multiprocessing`模块来创建和管理独立运行的子进程的方式。这种并行可以显著提高CPU密集型任务的性能,因为每个子进程可以在单独的处理器核心上运行,互不影响。以下是多进程并行的一个基本示例:
```python
import multiprocessing
def worker(num):
"""子进程中执行的任务"""
print(f"Worker {num} is running.")
if __name__ == "__main__":
# 创建一个进程池
pool = multiprocessing.Pool(processes=4) # 根据需要调整进程数
# 将任务提交给进程池
tasks = [pool.apply_async(worker, args=(i,)) for i in range(5)]
# 等待所有任务完成
pool.close() # 阻止接受新的任务
pool.join() # 主进程等待所有子进程结束
print("All tasks are completed.")
```
在这个例子中,`worker`函数是工作单元,`Pool`对象负责管理进程。通过`apply_async`方法,我们可以异步地将任务提交给进程池,并在所有任务完成后打印一条消息。
阅读全文
相关推荐












