本来这周打算基于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>>>> </code><code>import</code> <code>psutil</code>
<code>>>> 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>>>> psutil.cpu_count(logical</code><code>=</code><code>False</code><code>)</code>
<code>#获取CPU的逻辑个数,默认logical=True</code>
<code>>>> psutil.cpu_count()</code>
<code>#获取cpu负载的百分比</code>
<code>>>> psutil.cpu_percent()</code>
<code>0.10000000000000001</code>
<code>#获取cpu的完整信息,需要显示所有逻辑cpu信息</code>
<code>>>> 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>>>> psutil.cpu_times().user</code>
<code>3.2999999999999998</code>
<code>#时间间隔,是否以列表形式输出</code>
<code>>>> 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>>>> mem </code><code>=</code> <code>psutil.virtual_memory() </code>
<code>>>> 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>>>> 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>>>> mem.total</code>
<code>1960640512L</code>
<code>#获取使用内存</code>
<code>>>> mem.used</code>
<code>158261248L</code>
<code>#获取空闲内存</code>
<code>>>> mem.free</code>
<code>1802379264L</code>
<code>#获取swap分区信息</code>
<code>>>> 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>>>> psutil.dis</code>
<code>psutil.disk_io_counters psutil.disk_partitions psutil.disk_usage</code>
分述psutil模块中disk方法的使用
<code>#获取磁盘的完整信息</code>
<code>>>> 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>>>> 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>>>> 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>>>> 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>>>> 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>>>> psutil.net</code>
<code>psutil.net_connections psutil.net_io_counters psutil.network_io_counters</code>
分述psutil模块中nework方法的使用
<code>#获取网络总的IO信息,默认pernic=False</code>
<code>>>> 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>>>> 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>>>> 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>>>> 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>>>> 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>>>> </code><code>len</code><code>(psutil.users())</code>
<code>4</code>
<code>#获取系统开机时间并格式化输出</code>
<code>>>> 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>>>> 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>>>> p </code><code>=</code> <code>psutil.Process(</code><code>2154</code><code>) 实例化一个Process对象,参数为一个进程的PID</code>
<code>>>> p.name() 进程名</code>
<code>'python'</code>
<code>>>> p.exe() 进程</code><code>bin</code><code>路径</code>
<code>'/usr/bin/python'</code>
<code>>>> p.cwd() 进程工作目录绝对路径</code>
<code>'/root'</code>
<code>>>> p.status() 进程状态</code>
<code>'running'</code>
<code>>>> p.create_time() 进程创建时间、时间戳格式</code>
<code>1427469528.49</code>
<code>>>> 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>>>> 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>>>> 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>>>> p.cpu_affinity() get进程CPU亲和度</code>
<code>[</code><code>0</code><code>]</code>
<code>>>> p.memory_percent() 进程内存利用率</code>
<code>0.43265534645853532</code>
<code>>>> 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>>>> 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>>>> p.connections() 返回打开进程socket的namedutples列表</code>
<code>[]</code>
<code>>>> p.num_threads() 进程开启的线程数</code>
<code>1</code>
(2)popen类的使用
psutil提供了popen类的作用是获取用户启动的应用程序进程信息,以便跟踪程序进程的运行状态。
<code>#定义</code>
<code>>>> </code><code>from</code> <code>subprocess </code><code>import</code> <code>PIPE</code>
<code>>>> 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>>>> p.name()</code>
<code>>>> p.username()</code>
<code>'root'</code>
<code>>>> p.communicate()</code>
<code>(</code><code>'hello world.\n'</code><code>, </code><code>None</code><code>)</code>
<code>>>> 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>>>> mem </code><code>=</code> <code>psutil.virtual_memory()</code>
<code>>>> mem.total</code><code>/</code><code>unit[</code><code>'m'</code><code>] </code><code>#以M的单位显示,并保留整数</code>
<code>1869L</code>
<code>>>> mem.total</code><code>/</code><code>unit[</code><code>'g'</code><code>] </code><code>#以G的单位显示,并保留整数</code>
<code>1L</code>
<code>>>> </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>>>> </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,如需转载请自行联系原作者