本來這周打算基于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,如需轉載請自行聯系原作者