Python 多进程编程

7 投票
2 回答
1068 浏览
提问于 2025-04-17 07:17

在Python中,有没有办法知道一个进程正在使用哪个CPU?比如说,如果我为不同的任务创建不同的进程,使用多进程模块,那有没有办法找出每个进程正在运行在哪个核心上呢?

2 个回答

1

我觉得这个事情不太可能做到,因为一个进程并不是只在一个核心上运行。一个进程可以在一个或多个核心上执行(如果它使用了线程的话),而且用来执行它的核心可能会随着时间的推移而变化,因为操作系统会尝试平衡工作负载。

如果你想要获取一些关于进程的信息,可以看看 psutil 这个库。

3

简短回答

不,这个是不可能的。

详细回答

一般来说,你是无法做到这一点的,因为进程并不是固定在某个特定的核心上运行的。进程并没有固定的CPU,它们总是可以在任何核心上运行:这由操作系统来决定,哪个核心在什么时间运行特定的进程。这个决策过程叫做 调度,而具体的实现方式是跟操作系统有关的。

在某些特定的操作系统上,你可能可以控制处理器如何执行特定的进程。将优先使用的处理器进行分配,通常被称为 处理器亲和性。即使设置了亲和性,也不能保证一个进程总是在指定的核心上执行:最终还是由操作系统(和CPU)来决定调度是如何执行的。

在我知道的所有操作系统中,最接近的例子可能是Linux的 sched_getcpu,它可以用来“确定调用线程正在运行的CPU”(查看 man sched_getcpu)。即使你用这个函数检查了当前的CPU,内核也可能会在之后立即更换核心。

撰写回答