分类:
Python 2012-12-05 08:45
6387人阅读
收藏
举报
注:需要安装psutil库
源代码如下:
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- import sys
- import os
-
- import atexit
- import time
- import psutil
-
-
- time.sleep(3)
-
- line_num = 1
-
-
- def getCPUstate(interval=1):
- return (" CPU: " + str(psutil.cpu_percent(interval)) + "%")
-
- def getMemorystate():
- phymem = psutil.phymem_usage()
- buffers = getattr(psutil, 'phymem_buffers', lambda: 0)()
- cached = getattr(psutil, 'cached_phymem', lambda: 0)()
- used = phymem.total - (phymem.free + buffers + cached)
- line = " Memory: %5s%% %6s/%s" % (
- phymem.percent,
- str(int(used / 1024 / 1024)) + "M",
- str(int(phymem.total / 1024 / 1024)) + "M"
- )
- return line
- def bytes2human(n):
-
-
-
-
-
-
- symbols = ('K', 'M', 'G', 'T', 'P', 'E', 'Z', 'Y')
- prefix = {}
- for i, s in enumerate(symbols):
- prefix[s] = 1 << (i+1)*10
- for s in reversed(symbols):
- if n >= prefix[s]:
- value = float(n) / prefix[s]
- return '%.2f %s' % (value, s)
- return '%.2f B' % (n)
-
-
- def poll(interval):
-
- tot_before = psutil.network_io_counters()
- pnic_before = psutil.network_io_counters(pernic=True)
-
- time.sleep(interval)
- tot_after = psutil.network_io_counters()
- pnic_after = psutil.network_io_counters(pernic=True)
-
- cpu_state = getCPUstate(interval)
-
- memory_state = getMemorystate()
- return (tot_before, tot_after, pnic_before, pnic_after,cpu_state,memory_state)
-
- def refresh_window(tot_before, tot_after, pnic_before, pnic_after,cpu_state,memory_state):
- os.system("cls")
-
-
-
-
- print(time.asctime()+" | "+cpu_state+" | "+memory_state)
-
-
- print(" NetStates:")
- print("total bytes: sent: %-10s received: %s" % (bytes2human(tot_after.bytes_sent),
- bytes2human(tot_after.bytes_recv))
- )
- print("total packets: sent: %-10s received: %s" % (tot_after.packets_sent,
- tot_after.packets_recv)
- )
-
-
- print("")
- nic_names = pnic_after.keys()
-
- for name in nic_names:
- stats_before = pnic_before[name]
- stats_after = pnic_after[name]
- templ = "%-15s %15s %15s"
- print(templ % (name, "TOTAL", "PER-SEC"))
- print(templ % (
- "bytes-sent",
- bytes2human(stats_after.bytes_sent),
- bytes2human(stats_after.bytes_sent - stats_before.bytes_sent) + '/s',
- ))
- print(templ % (
- "bytes-recv",
- bytes2human(stats_after.bytes_recv),
- bytes2human(stats_after.bytes_recv - stats_before.bytes_recv) + '/s',
- ))
- print(templ % (
- "pkts-sent",
- stats_after.packets_sent,
- stats_after.packets_sent - stats_before.packets_sent,
- ))
- print(templ % (
- "pkts-recv",
- stats_after.packets_recv,
- stats_after.packets_recv - stats_before.packets_recv,
- ))
- print("")
-
- try:
- interval = 0
- while 1:
- args = poll(interval)
- refresh_window(*args)
- interval = 1
- except (KeyboardInterrupt, SystemExit):
- pass

|
|