获取Mac闲置时间 C或Python

3 投票
4 回答
1325 浏览
提问于 2025-04-16 01:01

我怎么才能在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次方,就能得到空闲时间(以秒为单位)。

撰写回答