python - 如何在python中获取每个核心的线程数

标签 python multithreading

我的计算机 CPU 有 4 个内核,每个内核有 2 个线程,我可以通过 lscpu 获得它命令:

Architecture:                    x86_64
CPU op-mode(s):                  32-bit, 64-bit
Byte Order:                      Little Endian
Address sizes:                   48 bits physical, 48 bits virtual
CPU(s):                          4
On-line CPU(s) list:             0-3
Thread(s) per core:              2
...
我可以通过 multiprocessing.cpu_count() 获得内核数 python 标准。但我找不到任何方法来通过 python 获取每个核心的线程数。我知道我可以执行 lscpu命令并通过解析python中的输出来获取线程数。但是有没有标准的解决方案?

最佳答案

您可以使用 psutil python3中的模块。

python3 -m pip install psutil
psutil.cpu_count方法返回系统中逻辑 CPU 的数量(与 Python 3.4 中的 os.cpu_count 相同),如果未确定,则返回 None。逻辑核心是指物理核心的数量乘以每个核心上可以运行的线程数(这称为超线程)。如果逻辑为 False,则仅返回物理内核数(不包括超线程 CPU),如果未确定,则返回 None。
import psutil

threads_count = psutil.cpu_count() / psutil.cpu_count(logical=False)

关于python - 如何在python中获取每个核心的线程数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62652951/

相关文章:

c - 对多个生产者单个消费者循环缓冲区进行故障排除

python - 在 testpypi 上检查 setuptools install_requires

python - 如何在 pandas 的 groupby 之后乘以一列的行?

java - 如何设计以避免在初始化字段时主线程异常上的数据库访问?

java - 计划任务使应用程序保持 Activity 状态

c# - 多线程与多实例——选择哪个?

python - Tkinter - 来自另一个类的入口 .get()

python - 类型错误 : wrapper() got an unexpected keyword argument 'nam' while using @jwt_required

Python+OpenCV 3 - 无法使用 SIFT

c# - catch block 没有在另一个线程中捕获异常