2026-07-19 23:29:46 +05:00
# rawcpu
2026-08-18 02:30:59 +05:00
[](https://github.com/devsavsis/rawcpu/actions/workflows/ci.yml)
2026-07-19 23:29:46 +05:00
[](https://codecov.io/gh/ImSavsis/rawcpu)
[](https://pypi.org/project/rawcpu/)
[](https://pypi.org/project/rawcpu/)
[](https://pypi.org/project/rawcpu/)
2026-08-18 02:30:59 +05:00
[](https://github.com/devsavsis/rawcpu/blob/master/LICENSE)
2026-07-19 23:29:46 +05:00
прямой доступ к инструкциям `CPUID` /`RDTSC` из питона — то, что нормально делает только C++, а чистый питон вообще никак. крошечная нативная dll под капотом + ctypes сверху, никакого Python C API.
```mermaid
sequenceDiagram
App->>rawcpu: cpuid(1) / rdtsc()
rawcpu->>DLL: ctypes call
DLL->>CPU: инструкция CPUID/RDTSC напрямую
CPU-->>DLL: сырые регистры / счётчик тактов
DLL-->>App: tuple(int) / int
```
## установка
```
pip install rawcpu
```
пока только windows x64.
## юзать
```python
import rawcpu
print(rawcpu.vendor()) # 'GenuineIntel' / 'AuthenticAMD'
print(rawcpu.brand()) # 'AMD Ryzen 9 ...'
print(rawcpu.has_feature("avx2")) # True/False, без запуска кода который может упасть на старом CPU
start = rawcpu.rdtsc()
# твой код
end = rawcpu.rdtsc()
print(end - start, "тактов") # точнее чем time.perf_counter(), считает реальные такты CPU
```
## документация
- [quickstart ](docs/quickstart.md )
- [api ](docs/api.md )
## фичи
- сырой `cpuid(leaf, subleaf)` — регистры eax/ebx/ecx/edx как есть
- `rdtsc()` — счётчик тактов CPU напрямую, без О С -абстракции
- `has_feature()` — проверка sse/avx/avx2/aes/fma и т.д. по битам без падений на неподдерживающем CPU
- typed, питон 3.10– 3.13
## чего нет
- linux/mac — только windows пока
- запись в регистры / что-то в духе MSR — это уже ring 0, юзермодом не достать без драйвера