使用 multiprocessing 模块实现多进程

class multiprocessing,多进程

使用 Python 的 multiprocessing 模块可以方便地实现多进程操作。以下是一个基本示例,展示了如何创建和管理多个进程。

import multiprocessing
import os
import time

# 定义一个函数,表示每个进程要执行的任务
def worker_function(name, delay):
    print(f"进程 {name} (PID: {os.getpid()}) 开始工作")
    time.sleep(delay)
    print(f"进程 {name} 完成工作")

if __name__ == "__main__":
    # 创建多个进程
    processes = []
    for i in range(5):
        process = multiprocessing.Process(target=worker_function, args=(f"Worker-{i}", i+1))
        processes.append(process)
        process.start()  # 启动进程

    # 等待所有进程完成
    for process in processes:
        process.join()

    print("所有进程已完成工作")

代码解析:

  1. import multiprocessing: 导入 multiprocessing 模块,该模块提供了多进程管理的功能。
  2. def worker_function(name, delay):: 定义了一个函数 worker_function,它接受两个参数:name(进程名)和 delay(延迟时间)。该函数模拟了一个简单的任务,通过 time.sleep(delay) 让进程暂停一段时间。
  3. if __name__ == "__main__":: 这是一个惯用语句,确保当该脚本作为主程序运行时才会执行以下代码,避免在 Windows 上创建新进程时无限递归。
  4. processes.append(process): 创建了一个进程对象 process,目标函数是 worker_function,并传递参数。将这个进程添加到 processes 列表中。
  5. process.start(): 启动进程。start() 方法会调用 Process 对象的 run() 方法,执行目标函数 worker_function
  6. process.join(): 主进程会等待所有的子进程执行完成后再继续运行。

输出示例:

程序运行后,你将看到类似以下的输出,表示多个进程的执行情况:

进程 Worker-0 (PID: 12345) 开始工作
进程 Worker-1 (PID: 12346) 开始工作
进程 Worker-2 (PID: 12347) 开始工作
进程 Worker-3 (PID: 12348) 开始工作
进程 Worker-4 (PID: 12349) 开始工作
进程 Worker-0 完成工作
进程 Worker-1 完成工作
进程 Worker-2 完成工作
进程 Worker-3 完成工作
进程 Worker-4 完成工作
所有进程已完成工作

每个进程在独立的子进程中执行,可以看到不同的进程ID(PID)。join() 确保主进程在所有子进程结束后才退出。

评论区
评论列表
menu