如何查看进程运行的CPU核心?操作系统如何调用多CPU核心?
问题解答
一、查看特定PID进程运行的CPU核心
1. 使用Python的psutil库
这是Python层面最便捷的解决方案,先安装依赖库:
pip install psutil
通过以下代码获取指定PID进程的核心编号:
import psutil pid = 8755 try: proc = psutil.Process(pid) # 获取进程当前运行的CPU核心编号(从0开始计数) core_num = proc.cpu_num() print(f"进程{pid}当前运行在CPU核心{core_num}") except psutil.NoSuchProcess: print(f"不存在PID为{pid}的进程")
2. 使用系统命令
Linux/macOS:
- 用ps命令直接查询:
输出的ps -o psr -p 8755PSR字段即为核心编号(从0开始)。 - 用top实时监控:
进入top界面后按top -p 8755f键,勾选P(Last Used Cpu)字段,即可看到进程当前使用的核心。
- 用ps命令直接查询:
Windows:
- 图形化方式:打开任务管理器 → 切换到「详细信息」标签 → 找到PID为8755的进程,查看「CPU」列的数值(核心编号从0开始)。
- 命令行方式:
wmic process where processid=8755 get processorid
二、操作系统调用CPU核心的方式
操作系统既不是通过「名称」也不是通过物理地址调用CPU核心,而是通过**逻辑CPU的数字标识符(索引)**来管理和调度的。
现代系统会把每个物理核心(包括超线程生成的逻辑核心)抽象为编号从0开始的调度实体(比如你的4核心系统对应编号0、1、2、3),内核调度器通过这些编号分配进程/线程到对应核心。Python的os.cpu_count()返回的数值就是逻辑核心总数,multiprocessing中设置进程亲和性时也是指定这些编号(例如process.cpu_affinity([0,1])限制进程仅在0、1核心运行)。
这些编号是内核层面的抽象,与CPU物理地址无关,用户层和应用程序只需与这些编号交互即可。
内容的提问来源于stack exchange,提问作者showkey
相关产品推荐
相关产品推荐

