Skip to content

Register now for

# 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 13 days ago ✏️ Updated 13 days ago