获取Mac闲置时间 C或Python
我怎么才能在C或Python中获取系统的空闲时间(没有按键,也没有鼠标移动)呢?
补充说明:我的程序在空闲时间超过10秒时会暂停一个计数器。
4 个回答
0
如果你是想知道一个程序运行过程中花了多少时间,等程序结束后,最简单的方法就是使用Unix系统里的“time”命令:
# echo foo
foo
# time echo foo
foo
real 0m0.000s
user 0m0.000s
sys 0m0.000s
如果你真的需要在程序运行的时候收集数据,那就有更专业的办法——我可以帮你查一下Unix的相关书籍……
更新:
可以使用这个函数:clock_t times( struct tms *buf );
想了解更多细节,可以查查手册或者看《Advanced Programming in the UNIX Environment》这本书的第8.15节——这本书是处理这类问题的权威资料。
更新 2:
可以在另一个进程中运行“sar”(它就像是一个打印输出的top命令),找你想要的结果,然后给那个进程发送一个信号。
另外,还有一个关于“ioreg”的解决方案。
不过,如果你的程序本身就像操作系统内核那样,有一个大的循环在里面,可能最好还是自己来记录一下未使用的处理时间。否则,这个问题就不那么简单了。
0
在Python(Windows系统)中,这个怎么处理呢?就像Python标准库里的时间模块一样……?
3
我现在没有Mac可以测试,所以不能确认这个方法是否有效,但这个讨论串看起来提供了你需要的解决方案:http://www.dssw.co.uk/sleepcentre/threads/system_idle_time_how_to_retrieve.html
简单来说,你可以使用 subprocess 模块,然后调用以下内容:
ioreg -c IOHIDSystem
接着解析输出的结果,把这个值除以10的9次方,就能得到空闲时间(以秒为单位)。