如何获取python中可用内核的数量



我知道的在python中获取内核数量的标准方法是使用multiprocess.cpu_count

import multiprocessing
print(multiprocessing.cpu_count())

此外,在创建任务时,我们可以指定进程可以使用taskset访问的一些核心。

显然,cpu_count总是获取机器的可用核心数量,而不管进程是否被限制为仅使用其中的一些核心。

python nproc.py
taskset 7 python nproc.py
taskset 1 python nproc.py

另一方面,nproc给出了可用于该过程的内核数量。

taskset 7 nproc # gives at most 3
taskset 1 nproc # gives 1

我知道我可以调用nproctaskset -p {os.getpid()}来获得正确数量的内核。有没有其他方法可以做到这一点,而不依赖于其他程序(阅读/proc/{os.pid()}/*可能是一种解决方案(。

谢谢

根据文档,这可能是有限的可用性,但os库似乎有您想要的;

到调度程序的接口

这些功能控制操作系统如何分配进程的CPU时间。它们仅在某些Unix平台上可用。有关更多详细信息,请参阅Unix手册页。

3.3版新增。

。。。

os.sched_getaffinity(pid(

返回使用pid pid的进程(或当前进程,如果为零(限制的CPU集。

使用Ubuntu 20.04.2(WSL(测试:

aaron@DESKTOP:/mnt/c$ python3 -c "import os; print(os.sched_getaffinity(0))"
{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}
aaron@DESKTOP:/mnt/c$ taskset 7 python3 -c "import os; print(os.sched_getaffinity(0))"
{0, 1, 2}

编辑:在窗口上,您可能必须查看psutil

相关内容

  • 没有找到相关文章

最新更新