Call cpuid from Python code.
This module provides C bindings to call the cpuid instruction from Python code. Simply pass a MSR ID and the cpuid function will return the result as a tuple representing the eax, ebx, ecx and edx registers as integers.
from cpuid import cpuid msr = 0x80000000 # example value eax, ebx, ecx, edx = cpuid(msr)
In addition to the raw cpuid functionality, this library provides helpers for commonly used CPUID registers.
from cpuid.features import prcessor_features, secure_encryption_info, vendor vendor() # returns the result of cpuid(0) as bytes, ex: b"GenuineIntel" features = processor_features() # A class with all the fields of cpuid(1) secure_encryption_features = secure_encryption_info() # AMD secure encryption features
Feel free to add more CPUID registers! You can find the specification in official Intel and AMD docs like this one: https://www.amd.com/system/files/TechDocs/24594.pdf.
Other projects already provide this functionality. To the best of our knowledge:
- PyCPUID <https://github.com/ngnpope/pycpuid>_ is not compatible with Python 3. An open PR from 2015 proposes an upgrade.
- cpuid.py looks fun, but ultimately is machine code injection. We wanted something more auditable.
We do not (yet) provide binary wheel distributions for this package, because of the added complexity of shipping compiled libraries for Linux. You will require GCC to compile the package for your system.
This project has been set up using PyScaffold 4.3. For details and usage information on PyScaffold see https://pyscaffold.org/.