【问题标题】:How can I read system information in Python on OS X?如何在 OS X 上读取 Python 中的系统信息?
【发布时间】:2010-10-02 19:52:48
【问题描述】:

根据OS-agnostic question,特别是this response,类似于 Linux 上的 /proc/meminfo 等提供的数据,我如何使用 Python 从 OS X 读取系统信息(包括但不限于内存使用情况)。

【问题讨论】:

    标签: python macos operating-system


    【解决方案1】:

    您可以从命令行实用程序sysctlvm_stat(以及ps,如this question)获取大量系统信息。

    如果您没有找到更好的方法,您可以随时使用subprocess 调用这些方法。

    【讨论】:

      【解决方案2】:

      平台模块中唯一可以访问的东西非常好,但它非常有限(cpu、操作系统版本、架构等)。对于 cpu 使用率和正常运行时间,我认为您必须将命令行实用程序“uptime”和“vm_stat”包装起来。

      我为 vm_stat 构建了一个,另一个由你决定;-)

      import os, sys
      
      def memoryUsage():
      
          result = dict()
      
          for l in [l.split(':') for l in os.popen('vm_stat').readlines()[1:8]]:
              result[l[0].strip(' "').replace(' ', '_').lower()] = int(l[1].strip('.\n '))
      
          return result
      
      print memoryUsage()
      

      【讨论】:

        【解决方案3】:

        我做了更多的谷歌搜索(寻找“OS X /proc”)——看起来 sysctl 命令可能是您想要的,尽管我不确定它是否会为您提供所需的所有信息。这是手册页:http://developer.apple.com/DOCUMENTATION/Darwin/Reference/ManPages/man8/sysctl.8.html

        另外,wikipedia

        【讨论】:

          【解决方案4】:

          这是一个基于 MacFUSE 的 /proc fs:

          http://www.osxbook.com/book/bonus/chapter11/procfs

          如果您可以控制正在运行您的 python 程序的盒子,那么它可能是一个合理的解决方案。无论如何,有一个 /proc 可以查看是件好事!

          【讨论】:

            【解决方案5】:

            我正在寻找同样的东西,我注意到这个问题没有公认的答案。在最初提出问题后的中间时间,发布了一个名为 psutil 的 python 模块:

            https://github.com/giampaolo/psutil

            对于内存利用率,您可以使用以下内容:

            >>> psutil.virtual_memory()
            svmem(total=8374149120L, available=2081050624L, percent=75.1, used=8074080256L, free=300068864L, active=3294920704, inactive=1361616896, buffers=529895424L, cached=1251086336)
            >>> psutil.swap_memory()
            sswap(total=2097147904L, used=296128512L, free=1801019392L, percent=14.1, sin=304193536, sout=677842944)
            >>>
            

            还有cpu利用率、进程管理、磁盘和网络等功能。模块中唯一遗漏的是一个用于检索平均负载的函数,但如果您在类 UNIX 系统上,python 标准库有 os.getloadavg()。

            psutil 声称支持 Linux、Windows、OSX、FreeBSD 和 Sun Solaris,但我只尝试过 OSX mavericks 和 fedora 20。

            【讨论】:

              猜你喜欢
              • 2010-10-02
              • 2012-02-02
              • 2010-09-25
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2011-03-07
              • 2010-10-02
              相关资源
              最近更新 更多