如何在Objective-C或Python中检测CPU速度和硬盘转速

0 投票
3 回答
1670 浏览
提问于 2025-04-16 05:16

我刚接触Objective-C,出于学术原因,我需要读取CPU的速度和硬盘的转速。

在Objective-C或Python中,有什么最简单的方法可以访问一些系统设置呢?

我可以在这个项目中选择使用Objective-C或Python。

3 个回答

1

检查CPU速度其实不是Objective C的事情,而是操作系统的事情。在OS X(我想iOS也是)上,你可以使用sysctlbyname(3)这个函数,查看hw.cpufrequency这个属性,像这样:

int hz;
size_t hz_size = sizeof(hz);
int rc = sysctlbyname("hw.cpufrequency", &hz, &hz_size, NULL, 0);
if (0 == rc) {
    fprintf(stderr, "Clockspeed is %d hz\n", hz);
}

我不知道有什么好的方法来获取硬盘的转速,但我知道一个不好的方法。你可以解析system_profiler的输出,里面有相关信息(显示为“旋转速率”):

    Hitachi HTS543232L9SA02:

      Capacity: 320.07 GB (320,072,933,376 bytes)
      Model: Hitachi HTS543232L9SA02                 
      Revision: FB4AC50F
      Serial Number: (omitted)
      Native Command Queuing: Yes
      Queue Depth: 32
      Removable Media: No
      Detachable Drive: No
      BSD Name: disk0
      Rotational Rate: 5400
      Medium Type: Rotational
      Partition Map Type: GPT (GUID Partition Table)
      S.M.A.R.T. status: Verified
      Volumes:
        Macintosh HD:
          Capacity: 319.73 GB (319,728,959,488 bytes)
          Available: 12.4 GB (12,397,940,736 bytes)
          Writable: Yes
          File System: Journaled HFS+
          BSD Name: disk0s2
          Mount Point: /

可能还有更好的方法可以使用,只是我不知道而已。

2

我觉得你需要用C++模块配合Python来检测CPU的速度或者硬盘的转速。你可以参考一下这个链接:计算总的CPU使用率,可能会对你有帮助。

我对Obj-C一点都不了解,所以不能告诉你用这个语言是否可行!

1

这个方法可以通过读取注册表来获取Windows 2000及以上版本的CPU速度,使用的是Python语言:

import _winreg

key = _winreg.OpenKey(
    _winreg.HKEY_LOCAL_MACHINE,
    r"HARDWARE\DESCRIPTION\System\CentralProcessor\0")

value, type = _winreg.QueryValueEx(key, "~MHz")
print 'CPU speed is:', value

不过我不知道其他操作系统该怎么做,也不知道怎么获取硬盘的转速。

撰写回答