使用 multiprocessing 模块实现多进程
使用 Python 的 multiprocessing 模块可以方便地实现多进程操作。以下是一个基本示例,展示了如何创建和管理多个进程。
python
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("所有进程已完成工作")代码解析:
import multiprocessing: 导入multiprocessing模块,该模块提供了多进程管理的功能。def worker_function(name, delay):: 定义了一个函数worker_function,它接受两个参数:name(进程名)和delay(延迟时间)。该函数模拟了一个简单的任务,通过time.sleep(delay)让进程暂停一段时间。if __name__ == "__main__":: 这是一个惯用语句,确保当该脚本作为主程序运行时才会执行以下代码,避免在 Windows 上创建新进程时无限递归。processes.append(process): 创建了一个进程对象process,目标函数是worker_function,并传递参数。将这个进程添加到processes列表中。process.start(): 启动进程。start()方法会调用Process对象的run()方法,执行目标函数worker_function。process.join(): 主进程会等待所有的子进程执行完成后再继续运行。
输出示例:
程序运行后,你将看到类似以下的输出,表示多个进程的执行情况:
text
进程 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() 确保主进程在所有子进程结束后才退出。