gpt4 book ai didi

python - 如何在python中获取可用内核数

转载 作者:行者123 更新时间:2023-12-05 05:37:42 25 4
gpt4 key购买 nike

我知道在 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 库有你想要的;

Interface to the scheduler

These functions control how a process is allocated CPU time by the operating system. They are only available on some Unix platforms. For more detailed information, consult your Unix manpages.

New in version 3.3.

...

os.sched_getaffinity(pid)

Return the set of CPUs the process with PID pid (or the current process if zero) is restricted to.

使用 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}

编辑:在 Windows 上,您可能需要查看 psutil

关于python - 如何在python中获取可用内核数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73077163/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com