天天看点

系统信息模块psutil

本来这周打算基于glaphite来对系统服务进行监控,但是中间一直有个地方没有搞明白,所以至于glaphite的web页面监控可能要推迟到下周与朋友相见!

今天就和大家聊聊一个非常不错的Python下系统信息模块pustil

简介

psutil是一个跨平台库,主要应用于系统监控,分析和限制系统资源及进程的管理;

CPU

内存

磁盘

网络

进程

安装

1

2

3

4

<code># wget https://pypi.python.org/packages/source/p/psutil/psutil-2.2.0.tar.gz --no-check-certificate </code>

<code># tar xf psutil-2.2.0.tar.gz </code>

<code># cd psutil-2.2.0</code>

<code># python setup.py install</code>

获取系统性能信息

(1)CPU信息

User Time:执行用户进程的时间百分比

System Time:执行内核进程和中断的时间百分比

Wait IO:由于IO等待而使CPU处于idle(空闲)状态的时间百分比

idle:CPU处于idle状态的时间百分比

  先来看看psutil模块中对cpu有哪些方法可以使用

<code>&gt;&gt;&gt; </code><code>import</code> <code>psutil</code>

<code>&gt;&gt;&gt; psutil.cpu_ (键盘tab键 命令补全)</code>

<code>psutil.cpu_count(    psutil.cpu_percent(  psutil.cpu_times(   psutil.cpu_times_percent(</code>

  分述psutil模块中cpu方法的使用

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

<code>#获取CPU的物理个数</code>

<code>&gt;&gt;&gt; psutil.cpu_count(logical</code><code>=</code><code>False</code><code>)</code>

<code>#获取CPU的逻辑个数,默认logical=True</code>

<code>&gt;&gt;&gt; psutil.cpu_count()</code>

<code>#获取cpu负载的百分比</code>

<code>&gt;&gt;&gt; psutil.cpu_percent()</code>

<code>0.10000000000000001</code>

<code>#获取cpu的完整信息,需要显示所有逻辑cpu信息</code>

<code>&gt;&gt;&gt; psutil.cpu_times()</code>

<code>scputimes(user</code><code>=</code><code>3.2999999999999998</code><code>, nice</code><code>=</code><code>0.0</code><code>, system</code><code>=</code><code>16.329999999999998</code><code>, idle</code><code>=</code><code>8322.0400000000009</code><code>, iowait</code><code>=</code><code>21.93</code><code>, irq</code><code>=</code><code>0.46999999999999997</code><code>, softirq</code><code>=</code><code>0.54000000000000004</code><code>, steal</code><code>=</code><code>0.0</code><code>, guest</code><code>=</code><code>0.0</code><code>)</code>

<code>#获取单项数据信息,如用户user的CPU时间比 </code>

<code>&gt;&gt;&gt; psutil.cpu_times().user</code>

<code>3.2999999999999998</code>

<code>#时间间隔,是否以列表形式输出</code>

<code>&gt;&gt;&gt; psutil.cpu_times_percent(interval</code><code>=</code><code>2</code><code>,percpu</code><code>=</code><code>True</code><code>)</code>

<code>[scputimes(user</code><code>=</code><code>0.0</code><code>, nice</code><code>=</code><code>0.0</code><code>, system</code><code>=</code><code>0.0</code><code>, idle</code><code>=</code><code>100.0</code><code>, iowait</code><code>=</code><code>0.0</code><code>, irq</code><code>=</code><code>0.0</code><code>, softirq</code><code>=</code><code>0.0</code><code>, steal</code><code>=</code><code>0.0</code><code>, guest</code><code>=</code><code>0.0</code><code>)]</code>

(2)内存信息

内存总数total

已使用的内存数used

空闲内存数free

缓冲区使用数buffers

缓存使用数cache

交换分区使用数swap

先来看看psutil模块中对memory有哪些方法可以使用

<code>&gt;&gt;&gt; mem </code><code>=</code> <code>psutil.virtual_memory()    </code>

<code>&gt;&gt;&gt; mem.(键盘tab键 命令补全)</code>

<code>mem.active     mem.buffers    mem.count      mem.inactive   mem.percent    mem.used      </code>

<code>mem.available  mem.cached     mem.free       mem.index      mem.total</code>

分述psutil模块中memory方法的使用

<code>#获取获取内存完整信息</code>

<code>&gt;&gt;&gt; mem    </code>

<code>svmem(total</code><code>=</code><code>1960640512L</code><code>, available</code><code>=</code><code>1861410816L</code><code>, percent</code><code>=</code><code>5.0999999999999996</code><code>, used</code><code>=</code><code>158261248L</code><code>, free</code><code>=</code><code>1802379264L</code><code>, active</code><code>=</code><code>55451648</code><code>, inactive</code><code>=</code><code>35868672</code><code>, buffers</code><code>=</code><code>13492224L</code><code>, cached</code><code>=</code><code>45539328</code><code>)</code>

<code>#获取内存总数</code>

<code>&gt;&gt;&gt; mem.total</code>

<code>1960640512L</code>

<code>#获取使用内存</code>

<code>&gt;&gt;&gt; mem.used</code>

<code>158261248L</code>

<code>#获取空闲内存</code>

<code>&gt;&gt;&gt; mem.free</code>

<code>1802379264L</code>

<code>#获取swap分区信息</code>

<code>&gt;&gt;&gt; psutil.swap_memory()</code>

<code>sswap(total</code><code>=</code><code>4160741376L</code><code>, used</code><code>=</code><code>0L</code><code>, free</code><code>=</code><code>4160741376L</code><code>, percent</code><code>=</code><code>0.0</code><code>, sin</code><code>=</code><code>0</code><code>, sout</code><code>=</code><code>0</code><code>)</code>

(3)硬盘信息

利用率

IO

先来看看psutil模块中对disk有哪些方法可以使用

<code>&gt;&gt;&gt; psutil.dis</code>

<code>psutil.disk_io_counters  psutil.disk_partitions   psutil.disk_usage</code>

分述psutil模块中disk方法的使用

<code>#获取磁盘的完整信息</code>

<code>&gt;&gt;&gt; psutil.disk_partitions()</code>

<code>[sdiskpart(device</code><code>=</code><code>'/dev/mapper/VolGroup-lv_root'</code><code>, mountpoint</code><code>=</code><code>'/'</code><code>, fstype</code><code>=</code><code>'ext4'</code><code>, opts</code><code>=</code><code>'rw'</code><code>), sdiskpart(device</code><code>=</code><code>'/dev/sda1'</code><code>, mountpoint</code><code>=</code><code>'/boot'</code><code>, fstype</code><code>=</code><code>'ext4'</code><code>, opts</code><code>=</code><code>'rw'</code><code>)]</code>

<code>#获取分区的使用情况</code>

<code>&gt;&gt;&gt; psutil.disk_usage(</code><code>'/'</code><code>)</code>

<code>sdiskusage(total</code><code>=</code><code>16521789440</code><code>, used</code><code>=</code><code>1433333760</code><code>, free</code><code>=</code><code>14249177088</code><code>, percent</code><code>=</code><code>8.6999999999999993</code><code>)</code>

<code>&gt;&gt;&gt; psutil.disk_usage(</code><code>'/boot'</code><code>)</code>

<code>sdiskusage(total</code><code>=</code><code>507744256</code><code>, used</code><code>=</code><code>33196032</code><code>, free</code><code>=</code><code>448333824</code><code>, percent</code><code>=</code><code>6.5</code><code>)</code>

<code>#获取硬盘总的IO数</code>

<code>&gt;&gt;&gt; psutil.disk_io_counters()</code>

<code>sdiskio(read_count</code><code>=</code><code>7295</code><code>, write_count</code><code>=</code><code>7190</code><code>, read_bytes</code><code>=</code><code>116201472</code><code>, write_bytes</code><code>=</code><code>38065152</code><code>, read_time</code><code>=</code><code>123500</code><code>, write_time</code><code>=</code><code>33952</code><code>)</code>

<code>#获取单个分区IO个数 读写信息</code>

<code>&gt;&gt;&gt; psutil.disk_io_counters(perdisk</code><code>=</code><code>True</code><code>)</code>

<code>{</code><code>'dm-1'</code><code>: sdiskio(read_count</code><code>=</code><code>297</code><code>, write_count</code><code>=</code><code>0</code><code>, read_bytes</code><code>=</code><code>1216512</code><code>, write_bytes</code><code>=</code><code>0</code><code>, read_time</code><code>=</code><code>534</code><code>, write_time</code><code>=</code><code>0</code><code>), </code><code>'sda2'</code><code>: sdiskio(read_count</code><code>=</code><code>2462</code><code>, write_count</code><code>=</code><code>2543</code><code>, read_bytes</code><code>=</code><code>56902656</code><code>, write_bytes</code><code>=</code><code>19034112</code><code>, read_time</code><code>=</code><code>29130</code><code>, write_time</code><code>=</code><code>11733</code><code>), </code><code>'dm-0'</code><code>: sdiskio(read_count</code><code>=</code><code>3859</code><code>, write_count</code><code>=</code><code>4647</code><code>, read_bytes</code><code>=</code><code>55251968</code><code>, write_bytes</code><code>=</code><code>19034112</code><code>, read_time</code><code>=</code><code>93096</code><code>, write_time</code><code>=</code><code>22216</code><code>), </code><code>'sda1'</code><code>: sdiskio(read_count</code><code>=</code><code>677</code><code>, write_count</code><code>=</code><code>6</code><code>, read_bytes</code><code>=</code><code>2830336</code><code>, write_bytes</code><code>=</code><code>21504</code><code>, read_time</code><code>=</code><code>740</code><code>, write_time</code><code>=</code><code>5</code><code>)}</code>

(4)网络信息

发送字节数

接收字节数

发送数据包数

接收数据包数

先来看看psutil模块中对network有哪些方法可以使用

<code>&gt;&gt;&gt; psutil.net</code>

<code>psutil.net_connections      psutil.net_io_counters      psutil.network_io_counters</code>

分述psutil模块中nework方法的使用

<code>#获取网络总的IO信息,默认pernic=False</code>

<code>&gt;&gt;&gt; psutil.net_io_counters()</code>

<code>snetio(bytes_sent</code><code>=</code><code>910776</code><code>, bytes_recv</code><code>=</code><code>13499265</code><code>, packets_sent</code><code>=</code><code>8757</code><code>, packets_recv</code><code>=</code><code>15556</code><code>, errin</code><code>=</code><code>0</code><code>, errout</code><code>=</code><code>0</code><code>, dropin</code><code>=</code><code>0</code><code>, dropout</code><code>=</code><code>0</code><code>)</code>

<code>#获取每个网络接口的IO信息</code>

<code>&gt;&gt;&gt; psutil.net_io_counters(pernic</code><code>=</code><code>True</code><code>)</code>

<code>{</code><code>'lo'</code><code>: snetio(bytes_sent</code><code>=</code><code>0</code><code>, bytes_recv</code><code>=</code><code>0</code><code>, packets_sent</code><code>=</code><code>0</code><code>, packets_recv</code><code>=</code><code>0</code><code>, errin</code><code>=</code><code>0</code><code>, errout</code><code>=</code><code>0</code><code>, dropin</code><code>=</code><code>0</code><code>, dropout</code><code>=</code><code>0</code><code>), </code><code>'eth2'</code><code>: snetio(bytes_sent</code><code>=</code><code>911296</code><code>, bytes_recv</code><code>=</code><code>13405208</code><code>, packets_sent</code><code>=</code><code>8761</code><code>, packets_recv</code><code>=</code><code>14795</code><code>, errin</code><code>=</code><code>0</code><code>, errout</code><code>=</code><code>0</code><code>, dropin</code><code>=</code><code>0</code><code>, dropout</code><code>=</code><code>0</code><code>), </code><code>'eth1'</code><code>: snetio(bytes_sent</code><code>=</code><code>1788</code><code>, bytes_recv</code><code>=</code><code>98301</code><code>, packets_sent</code><code>=</code><code>18</code><code>, packets_recv</code><code>=</code><code>803</code><code>, errin</code><code>=</code><code>0</code><code>, errout</code><code>=</code><code>0</code><code>, dropin</code><code>=</code><code>0</code><code>, dropout</code><code>=</code><code>0</code><code>)}</code>

<code>#获取所有接口的网卡信息</code>

<code>&gt;&gt;&gt; psutil.net_connections()</code>

<code>[sconn(fd</code><code>=</code><code>3</code><code>, family</code><code>=</code><code>2</code><code>, </code><code>type</code><code>=</code><code>1</code><code>, laddr</code><code>=</code><code>(</code><code>'0.0.0.0'</code><code>, </code><code>22</code><code>), raddr</code><code>=</code><code>(), status</code><code>=</code><code>'LISTEN'</code><code>, pid</code><code>=</code><code>1110</code><code>), sconn(fd</code><code>=</code><code>12</code><code>, family</code><code>=</code><code>2</code><code>, </code><code>type</code><code>=</code><code>1</code><code>, laddr</code><code>=</code><code>(</code><code>'127.0.0.1'</code><code>, </code><code>25</code><code>), raddr</code><code>=</code><code>(), status</code><code>=</code><code>'LISTEN'</code><code>, pid</code><code>=</code><code>1186</code><code>), sconn(fd</code><code>=</code><code>3</code><code>, family</code><code>=</code><code>2</code><code>, </code><code>type</code><code>=</code><code>1</code><code>, laddr</code><code>=</code><code>(</code><code>'192.168.10.26'</code><code>, </code><code>22</code><code>), raddr</code><code>=</code><code>(</code><code>'192.168.10.1'</code><code>, </code><code>54342</code><code>), status</code><code>=</code><code>'ESTABLISHED'</code><code>, pid</code><code>=</code><code>1794</code><code>), sconn(fd</code><code>=</code><code>4</code><code>, family</code><code>=</code><code>10</code><code>, </code><code>type</code><code>=</code><code>1</code><code>, laddr</code><code>=</code><code>(</code><code>'::'</code><code>, </code><code>22</code><code>), raddr</code><code>=</code><code>(), status</code><code>=</code><code>'LISTEN'</code><code>, pid</code><code>=</code><code>1110</code><code>), sconn(fd</code><code>=</code><code>13</code><code>, family</code><code>=</code><code>10</code><code>, </code><code>type</code><code>=</code><code>1</code><code>, laddr</code><code>=</code><code>(</code><code>'::1'</code><code>, </code><code>25</code><code>), raddr</code><code>=</code><code>(), status</code><code>=</code><code>'LISTEN'</code><code>, pid</code><code>=</code><code>1186</code><code>), sconn(fd</code><code>=</code><code>6</code><code>, family</code><code>=</code><code>2</code><code>, </code><code>type</code><code>=</code><code>2</code><code>, laddr</code><code>=</code><code>(</code><code>'0.0.0.0'</code><code>, </code><code>68</code><code>), raddr</code><code>=</code><code>(), status</code><code>=</code><code>'NONE'</code><code>, pid</code><code>=</code><code>1745</code><code>), sconn(fd</code><code>=</code><code>6</code><code>, family</code><code>=</code><code>2</code><code>, </code><code>type</code><code>=</code><code>2</code><code>, laddr</code><code>=</code><code>(</code><code>'0.0.0.0'</code><code>, </code><code>68</code><code>), raddr</code><code>=</code><code>(), status</code><code>=</code><code>'NONE'</code><code>, pid</code><code>=</code><code>1643</code><code>)]</code>

<code>#获取指定接口的网卡信息</code>

<code>&gt;&gt;&gt; psutil.net_connections(kind</code><code>=</code><code>'inet4'</code><code>)</code>

<code>[sconn(fd</code><code>=</code><code>3</code><code>, family</code><code>=</code><code>2</code><code>, </code><code>type</code><code>=</code><code>1</code><code>, laddr</code><code>=</code><code>(</code><code>'0.0.0.0'</code><code>, </code><code>22</code><code>), raddr</code><code>=</code><code>(), status</code><code>=</code><code>'LISTEN'</code><code>, pid</code><code>=</code><code>1110</code><code>), sconn(fd</code><code>=</code><code>12</code><code>, family</code><code>=</code><code>2</code><code>, </code><code>type</code><code>=</code><code>1</code><code>, laddr</code><code>=</code><code>(</code><code>'127.0.0.1'</code><code>, </code><code>25</code><code>), raddr</code><code>=</code><code>(), status</code><code>=</code><code>'LISTEN'</code><code>, pid</code><code>=</code><code>1186</code><code>), sconn(fd</code><code>=</code><code>3</code><code>, family</code><code>=</code><code>2</code><code>, </code><code>type</code><code>=</code><code>1</code><code>, laddr</code><code>=</code><code>(</code><code>'192.168.10.26'</code><code>, </code><code>22</code><code>), raddr</code><code>=</code><code>(</code><code>'192.168.10.1'</code><code>, </code><code>54342</code><code>), status</code><code>=</code><code>'ESTABLISHED'</code><code>, pid</code><code>=</code><code>1794</code><code>), sconn(fd</code><code>=</code><code>6</code><code>, family</code><code>=</code><code>2</code><code>, </code><code>type</code><code>=</code><code>2</code><code>, laddr</code><code>=</code><code>(</code><code>'0.0.0.0'</code><code>, </code><code>68</code><code>), raddr</code><code>=</code><code>(), status</code><code>=</code><code>'NONE'</code><code>, pid</code><code>=</code><code>1745</code><code>), sconn(fd</code><code>=</code><code>6</code><code>, family</code><code>=</code><code>2</code><code>, </code><code>type</code><code>=</code><code>2</code><code>, laddr</code><code>=</code><code>(</code><code>'0.0.0.0'</code><code>, </code><code>68</code><code>), raddr</code><code>=</code><code>(), status</code><code>=</code><code>'NONE'</code><code>, pid</code><code>=</code><code>1643</code><code>)]</code>

(5)其它系统信息

用户登录

开机时间

具体操作列子如下:

<code>#获取当前登录系统的用户信息</code>

<code>&gt;&gt;&gt; psutil.users()</code>

<code>[suser(name</code><code>=</code><code>'root'</code><code>, terminal</code><code>=</code><code>'tty1'</code><code>, host</code><code>=</code><code>'</code><code>', started=1427459328.0), suser(name='</code><code>root</code><code>', terminal='</code><code>pts</code><code>/</code><code>0</code><code>', host='</code><code>192.168</code><code>.</code><code>10.1</code><code>', started=1427459456.0), suser(name='</code><code>root</code><code>', terminal='</code><code>pts</code><code>/</code><code>1</code><code>', host='</code><code>192.168</code><code>.</code><code>10.1</code><code>', started=1427459456.0), suser(name='</code><code>root</code><code>', terminal='</code><code>pts</code><code>/</code><code>2</code><code>', host='</code><code>192.168</code><code>.</code><code>10.1</code><code>', started</code><code>=</code><code>1427459584.0</code><code>)]</code>

<code>&gt;&gt;&gt; </code><code>len</code><code>(psutil.users())</code>

<code>4</code>

<code>#获取系统开机时间并格式化输出</code>

<code>&gt;&gt;&gt; datetime.datetime.fromtimestamp(psutil.boot_time()).strftime(</code><code>'%Y-%m-%d %H:%M:%S'</code><code>)</code>

<code>'2015-03-27 20:27:36'</code>

系统进程管理方法

(1)进程信心

进程PID

单个进程名称

路径

状态

系统资源利用率

22

23

24

25

26

27

28

29

30

31

32

<code>&gt;&gt;&gt; psutil.pids()    列出所有进程的PID</code>

<code>[</code><code>1</code><code>, </code><code>2</code><code>, </code><code>3</code><code>, </code><code>4</code><code>, </code><code>5</code><code>, </code><code>6</code><code>, </code><code>7</code><code>, </code><code>8</code><code>, </code><code>9</code><code>, </code><code>10</code><code>, </code><code>11</code><code>, </code><code>12</code><code>, </code><code>13</code><code>, </code><code>14</code><code>, </code><code>15</code><code>, </code><code>16</code><code>, </code><code>17</code><code>, </code><code>18</code><code>, </code><code>19</code><code>, </code><code>20</code><code>, </code><code>21</code><code>, </code><code>22</code><code>, </code><code>23</code><code>, </code><code>24</code><code>, </code><code>25</code><code>, </code><code>26</code><code>, </code><code>27</code><code>, </code><code>28</code><code>, </code><code>29</code><code>, </code><code>30</code><code>, </code><code>31</code><code>, </code><code>32</code><code>, </code><code>37</code><code>, </code><code>38</code><code>, </code><code>40</code><code>, </code><code>41</code><code>, </code><code>71</code><code>, </code><code>199</code><code>, </code><code>203</code><code>, </code><code>218</code><code>, </code><code>219</code><code>, </code><code>220</code><code>, </code><code>325</code><code>, </code><code>327</code><code>, </code><code>344</code><code>, </code><code>345</code><code>, </code><code>364</code><code>, </code><code>417</code><code>, </code><code>569</code><code>, </code><code>764</code><code>, </code><code>765</code><code>, </code><code>817</code><code>, </code><code>1042</code><code>, </code><code>1058</code><code>, </code><code>1070</code><code>, </code><code>1110</code><code>, </code><code>1186</code><code>, </code><code>1194</code><code>, </code><code>1197</code><code>, </code><code>1209</code><code>, </code><code>1211</code><code>, </code><code>1213</code><code>, </code><code>1215</code><code>, </code><code>1217</code><code>, </code><code>1219</code><code>, </code><code>1228</code><code>, </code><code>1229</code><code>, </code><code>1231</code><code>, </code><code>1298</code><code>, </code><code>1643</code><code>, </code><code>1745</code><code>, </code><code>1794</code><code>, </code><code>1796</code><code>, </code><code>1829</code><code>, </code><code>1846</code><code>, </code><code>2004</code><code>, </code><code>2039</code><code>, </code><code>2154</code><code>, </code><code>2175</code><code>]</code>

<code>&gt;&gt;&gt; p </code><code>=</code> <code>psutil.Process(</code><code>2154</code><code>)    实例化一个Process对象,参数为一个进程的PID</code>

<code>&gt;&gt;&gt; p.name()    进程名</code>

<code>'python'</code>

<code>&gt;&gt;&gt; p.exe()    进程</code><code>bin</code><code>路径</code>

<code>'/usr/bin/python'</code>

<code>&gt;&gt;&gt; p.cwd()    进程工作目录绝对路径</code>

<code>'/root'</code>

<code>&gt;&gt;&gt; p.status()    进程状态</code>

<code>'running'</code>

<code>&gt;&gt;&gt; p.create_time()    进程创建时间、时间戳格式</code>

<code>1427469528.49</code>

<code>&gt;&gt;&gt; p.uids()    进程uid信息</code>

<code>puids(real</code><code>=</code><code>0</code><code>, effective</code><code>=</code><code>0</code><code>, saved</code><code>=</code><code>0</code><code>)</code>

<code>&gt;&gt;&gt; p.gids()    进程gid信息</code>

<code>pgids(real</code><code>=</code><code>0</code><code>, effective</code><code>=</code><code>0</code><code>, saved</code><code>=</code><code>0</code><code>)</code>

<code>&gt;&gt;&gt; p.cpu_times()    进程CPU时间信息</code>

<code>pcputimes(user</code><code>=</code><code>0.059999999999999998</code><code>, system</code><code>=</code><code>0.050000000000000003</code><code>)</code>

<code>&gt;&gt;&gt; p.cpu_affinity()    get进程CPU亲和度</code>

<code>[</code><code>0</code><code>]</code>

<code>&gt;&gt;&gt; p.memory_percent()    进程内存利用率</code>

<code>0.43265534645853532</code>

<code>&gt;&gt;&gt; p.memory_info()    进程内存rss、vms信息</code>

<code>pmem(rss</code><code>=</code><code>8486912</code><code>, vms</code><code>=</code><code>185946112</code><code>)</code>

<code>&gt;&gt;&gt; p.io_counters()    进程IO信息,包括读写IO数及字节数</code>

<code>pio(read_count</code><code>=</code><code>2206</code><code>, write_count</code><code>=</code><code>1286</code><code>, read_bytes</code><code>=</code><code>40960</code><code>, write_bytes</code><code>=</code><code>0</code><code>)</code>

<code>&gt;&gt;&gt; p.connections()    返回打开进程socket的namedutples列表</code>

<code>[]</code>

<code>&gt;&gt;&gt; p.num_threads()    进程开启的线程数</code>

<code>1</code>

(2)popen类的使用

psutil提供了popen类的作用是获取用户启动的应用程序进程信息,以便跟踪程序进程的运行状态。

<code>#定义</code>

<code>&gt;&gt;&gt; </code><code>from</code> <code>subprocess </code><code>import</code> <code>PIPE</code>

<code>&gt;&gt;&gt; p </code><code>=</code> <code>psutil.Popen([</code><code>'/usr/bin/python'</code><code>,</code><code>'-c'</code><code>,</code><code>'print("hello world.")'</code><code>],stdout</code><code>=</code><code>PIPE)</code>

<code>#获取</code>

<code>&gt;&gt;&gt; p.name()</code>

<code>&gt;&gt;&gt; p.username()</code>

<code>'root'</code>

<code>&gt;&gt;&gt; p.communicate()</code>

<code>(</code><code>'hello world.\n'</code><code>, </code><code>None</code><code>)</code>

<code>&gt;&gt;&gt; p.cpu_times()</code>

<code>pcputimes(user</code><code>=</code><code>0.01</code><code>, system</code><code>=</code><code>0.0</code><code>)</code>

补充:2015-03-28

psutil大小单位一般都采用字节,查看起来很不舒服!那么我们就用雅观的方式来显示内存的信息

<code>首先定义单位换算字典</code>

<code>unit </code><code>=</code> <code>{</code><code>'b'</code><code>:</code><code>1</code><code>, </code><code>'k'</code><code>:</code><code>2</code><code>*</code><code>*</code><code>10</code><code>, </code><code>'m'</code><code>:</code><code>2</code><code>*</code><code>*</code><code>20</code><code>, </code><code>'g'</code><code>:</code><code>2</code><code>*</code><code>*</code><code>30</code><code>}</code>

<code>统计内存的总数并换算单位</code>

<code>&gt;&gt;&gt; mem </code><code>=</code> <code>psutil.virtual_memory()</code>

<code>&gt;&gt;&gt; mem.total</code><code>/</code><code>unit[</code><code>'m'</code><code>]    </code><code>#以M的单位显示,并保留整数</code>

<code>1869L</code>

<code>&gt;&gt;&gt; mem.total</code><code>/</code><code>unit[</code><code>'g'</code><code>]    </code><code>#以G的单位显示,并保留整数</code>

<code>1L</code>

<code>&gt;&gt;&gt; </code><code>print</code> <code>'%.2f'</code> <code>%</code><code>(</code><code>float</code><code>(mem.total)</code><code>/</code><code>unit[</code><code>'m'</code><code>])    </code><code>#保留两位小数</code>

<code>1869.81</code>

<code>&gt;&gt;&gt; </code><code>print</code> <code>'%.2f'</code> <code>%</code><code>(</code><code>float</code><code>(mem.total)</code><code>/</code><code>unit[</code><code>'g'</code><code>])    </code><code>#保留两位小数</code>

<code>1.83</code>

所谓万世追究其根源,psutil的强大无非就是在底层封装了一些库,我们直接调用就可以了,实质上也是通过读取文件的形式来获取的。

     本文转自zys467754239 51CTO博客,原文链接:http://blog.51cto.com/467754239/1625819,如需转载请自行联系原作者