【问题标题】:Get Mac idle time C or Python获取 Mac 空闲时间 C 或 Python
【发布时间】:2010-07-08 22:24:41
【问题描述】:

如何在 C 或 Python 中获取系统空闲时间(未按下键 - 鼠标移动)?

编辑:我的程序在空闲时间 > 10 秒时暂停计数器

【问题讨论】:

    标签: python c macos python-idle


    【解决方案1】:

    我目前没有要测试的 Mac,因此无法确认这是否有效,但该线程似乎提供了您正在寻找的解决方案: http://www.dssw.co.uk/sleepcentre/threads/system_idle_time_how_to_retrieve.html

    简而言之,使用 subprocess 模块并调用:

    ioreg -c IOHIDSystem
    

    然后解析输出,将该值除以 10^9 得到空闲时间,以秒为单位。

    【讨论】:

      【解决方案2】:

      那在 python (win) 中呢?像python标准库中的时间模块...?

      【讨论】:

        【解决方案3】:

        您的应用程序是 GUI 驱动的吗?

        如果是这样,您可以在 GUI 出现时启动计时器,然后在顶层进行键盘和鼠标回调。每次触发键盘或鼠标回调时,重置计时器。否则,当计时器关闭时,它的处理程序代码应该暂停您的计数器。

        如果没有,请忽略这个... ;-)

        【讨论】:

          【解决方案4】:

          如果你的意思是在一个程序的过程中花费的时间,在程序完成之后,那么最简单的事情就是运行unix的“时间”函数:

          # echo foo
          foo
          
          # time echo foo
          foo
          
          real     0m0.000s
          user     0m0.000s
          sys  0m0.000s
          

          如果您确实需要在程序运行时进行数据收集,还有一个更技术性的答案 - 我会为您看一下 unix 书...

          更新:

          clock_t 次(struct tms *buf);

          在联机帮助页或“UNIX 环境中的高级编程”的第 8.15 节中查找详细信息 - Stevens - 这类问题的圣经。

          更新 2:

          在另一个进程中运行“sar”(它类似于 top 的标准输出打印版本),查找您想要的结果,并向进程发送信号。

          另外,发布了关于“ioreg”的其他解决方案。

          但是,如果您的程序本质上是“类似内核”的程序,其核心是一个大动作循环,您可能会发现最好自己跟踪未使用的循环。否则,这是一个需要解决的重要问题。

          【讨论】:

          • 通过超级用户提示运行回显? ;)
          • @zneak - 是的,只要你在做 /proc 的时候复制一份。 :-)
          猜你喜欢
          • 2011-09-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-06-11
          • 2013-07-07
          • 2011-04-24
          相关资源
          最近更新 更多