如何在Objective-C或Python中检测CPU速度和硬盘转速
我刚接触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
不过我不知道其他操作系统该怎么做,也不知道怎么获取硬盘的转速。