如何查看使用multiprocessing的Python脚本占用的CPU核心数?
查看Python多进程脚本实际使用CPU核心数的方法
一、先修正你的脚本(当前代码未实际启用并行)
你现在的代码虽然实例化了multiprocessing.Pool(),但循环里还是直接串行调用fibonacci(i),完全没用到进程池的并行能力。先改成真正的多进程调用:
import numpy as np import multiprocessing import time def fibonacci(n): if n <= 1: return np.array([0] if n == 0 else [0, 1]) sequence = [0, 1] while len(sequence) < n: next_number = sequence[-1] + sequence[-2] sequence.append(next_number) return np.array(sequence) if __name__ == '__main__': start_time = time.time() # 默认池大小等于系统CPU核心数,也可手动指定如multiprocessing.Pool(processes=4) pool = multiprocessing.Pool() n = 100 # 用map批量提交并行任务 results = pool.map(fibonacci, range(0, n)) pool.close() pool.join() U = time.time() - start_time print("Elapsed time =", U)
二、查看实际使用核心的方法
1. 代码内直接验证
在脚本中添加代码,直接打印进程池的进程数(对应使用的核心数),还可以查看每个子进程绑定的CPU核心:
import os import psutil # 放在if __name__ == '__main__'代码块内 print(f"系统可用CPU核心总数: {multiprocessing.cpu_count()}") print(f"当前进程池使用的进程数: {pool._processes}") # 查看每个子进程绑定的CPU核心 for p in pool._pool: proc = psutil.Process(p.pid) print(f"子进程PID {p.pid} 绑定核心: {proc.cpu_affinity()}")
需要先安装psutil:pip install psutil
2. 系统工具直观查看
- Windows:打开任务管理器 → 「详细信息」标签,找到Python进程,观察子进程的CPU占用;或切换到「性能」标签,查看各核心的负载情况。
- Linux/macOS:使用
htop(需先安装)或top命令(按1显示单核心负载),直接观察Python子进程对各核心的占用;也可执行ps -eo pid,ppid,pcpu,args | grep python查看进程CPU占比。
三、补充说明
multiprocessing.Pool()默认使用multiprocessing.cpu_count()返回的核心数,若系统有其他进程占用资源,脚本可能不会完全占满所有核心,但池的进程数就是它能调用的最大核心数。- 若需强制指定核心数量,创建池时传入
processes参数即可,比如multiprocessing.Pool(processes=6)会固定使用6个核心。
内容的提问来源于stack exchange,提问作者KeplerNick123
相关产品推荐
相关产品推荐

