Skip to content

Reference for ultralytics/utils/cpu.py

Note

This file is available at https://github.com/ultralytics/ultralytics/blob/main/ultralytics/utils/cpu.py. If you spot a problem please help fix it by contributing a Pull Request 🛠️. Thank you 🙏!


ultralytics.utils.cpu.CPUInfo

Provide cross-platform CPU brand and model information.

Query platform-specific sources to retrieve a human-readable CPU descriptor and normalize it for consistent presentation across macOS, Linux, and Windows. If platform-specific probing fails, generic platform identifiers are used to ensure a stable string is always returned.

Methods:

Name Description
name

Return the normalized CPU name using platform-specific sources with robust fallbacks.

_clean

Normalize and prettify common vendor brand strings and frequency patterns.

__str__

Return the normalized CPU name for string contexts.

Examples:

>>> CPUInfo.name()
'Apple M4 Pro'
>>> str(CPUInfo())
'Intel Core i7-9750H 2.60GHz'

__str__

__str__() -> str

Return the normalized CPU name.

Source code in ultralytics/utils/cpu.py
84
85
86
def __str__(self) -> str:
    """Return the normalized CPU name."""
    return self.name()

name staticmethod

name() -> str

Return a normalized CPU model string from platform-specific sources.

Source code in ultralytics/utils/cpu.py
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
@staticmethod
def name() -> str:
    """Return a normalized CPU model string from platform-specific sources."""
    try:
        if sys.platform == "darwin":
            # Query macOS sysctl for the CPU brand string
            s = subprocess.run(
                ["sysctl", "-n", "machdep.cpu.brand_string"], capture_output=True, text=True
            ).stdout.strip()
            if s:
                return CPUInfo._clean(s)
        elif sys.platform.startswith("linux"):
            # Parse /proc/cpuinfo for the first "model name" entry
            p = Path("/proc/cpuinfo")
            if p.exists():
                for line in p.read_text(errors="ignore").splitlines():
                    if "model name" in line:
                        return CPUInfo._clean(line.split(":", 1)[1])
        elif sys.platform.startswith("win"):
            try:
                import winreg as wr

                with wr.OpenKey(wr.HKEY_LOCAL_MACHINE, r"HARDWARE\DESCRIPTION\System\CentralProcessor\0") as k:
                    val, _ = wr.QueryValueEx(k, "ProcessorNameString")
                    if val:
                        return CPUInfo._clean(val)
            except Exception:
                # Fall through to generic platform fallbacks on Windows registry access failure
                pass
        # Generic platform fallbacks
        s = platform.processor() or getattr(platform.uname(), "processor", "") or platform.machine()
        return CPUInfo._clean(s or "Unknown CPU")
    except Exception:
        # Ensure a string is always returned even on unexpected failures
        s = platform.processor() or platform.machine() or ""
        return CPUInfo._clean(s or "Unknown CPU")





📅 Created 0 days ago ✏️ Updated 0 days ago