进程是python的最小资源分配单元,每个进程会独立进行内存分配和数据拷贝。
在这个例子中,每个 worker
在打印消息后都会休眠两秒钟,模拟一个耗时的任务。这样做可以让主程序等待一段时间,直到所有子进程完成它们的工作。这有助于理解多进程如何同时处理多个任务,并且可以看到子进程是如何并发执行的。
from multiprocessing import Process, cpu_count
import os
import time
def print_info(title):
print(f"{title} - 父进程ID: {os.getppid()}, 当前进程ID: {os.getpid()}")
def worker(num):
"""线程将要执行的工作"""
print_info(f"进程 {num}")
print(f"进程 {num} 正在工作...")
time.sleep(2) # 模拟耗时操作
print(f"进程 {num} 工作完成.")
if __name__ == '__main__':
# 打印一些基本信息
print_info("主程序开始")
# 获取CPU核心数
print(f"机器的CPU核心数为: {cpu_count()}")
# 创建进程列表
processes = []
for i in range(cpu_count()):
p = Process(target=worker, args=(i,))
processes.append(p)
p.start() # 启动进程
# 等待所有子进程结束
for p in processes:
p.join()
print_info("主程序结束")