syspy  0.1
syspy windows system information tool with python
memory.py
Go to the documentation of this file.
1 __title__ = 'syspy'
2 __version__ = '0.1'
3 __author__ = 'Ali GOREN <goren.ali@yandex.com>'
4 __repo__ = 'https://github.com/aligoren/syspy'
5 __license__ = 'Apache v2.0 License'
6 
7 import psutil
8 
9 class Memory:
10 
11  def __init__(self):
12  self.bytes2human
13  self.getVirtualMemory
14  self.getSwapMemory
15  self.getMemoryInfo
16  self.getMemoryInfoEx
17  self.getMemoryPercent
18  self.getMemoryMap
19 
20  def bytes2human(self,n):
21  # http://code.activestate.com/recipes/578019
22  # >>> bytes2human(10000)
23  # '9.8K'
24  # >>> bytes2human(100001221)
25  # '95.4M'
26  symbols = ('K', 'M', 'G', 'T', 'P', 'E', 'Z', 'Y')
27  prefix = {}
28  for i, s in enumerate(symbols):
29  prefix[s] = 1 << (i + 1) * 10
30  for s in reversed(symbols):
31  if n >= prefix[s]:
32  value = float(n) / prefix[s]
33  return '%.1f%s' % (value, s)
34  return "%sB" % n
35 
36  def getVirtualMemory(self):
37  """
38  START Test Results
39 
40  >>> import psutil
41  >>> mem = psutil.virtual_memory()
42  >>> mem
43  svmem(total=2142027776, available=1013366784, percent=52.7, used=1128660992, free=1013366784)
44  >>> lmem = list(mem)
45  >>> lmem
46  [2142027776, 1013366784, 52.7, 1128660992, 1013366784]
47  >>> lmem[0]
48  2142027776
49  >>>
50 
51  END Test Results
52  """
53  mem = psutil.virtual_memory()
54  lmem = list(mem)
55 
56  ret_total = "{0}".format(self.bytes2human(lmem[0]))
57  ret_ava = "{0}".format(self.bytes2human(lmem[1]))
58  ret_percent = "{0}".format(lmem[2])
59  ret_used = "{0}".format(self.bytes2human(lmem[3]))
60  ret_free = "{0}".format(self.bytes2human(lmem[4]))
61 
62  return ret_total, ret_ava, ret_percent, ret_used, ret_free
63 
64  def getSwapMemory(self):
65  """
66  START Test Results
67 
68  >>> import psutil
69  >>> psutil.swap_memory()
70  sswap(total=4284055552, used=1793249280, free=2490806272, percent=41.9, sin=0, s
71  out=0)
72  >>> smem = psutil.swap_memory()
73  >>> lsmem = list(smem)
74  >>> lsmem
75  [4284055552, 1794441216, 2489614336, 41.9, 0, 0]
76  >>>
77 
78  END Test Results
79  """
80  smem = psutil.swap_memory()
81  lsmem = list(smem)
82 
83  ret_swap_total = "{0}".format(self.bytes2human(lsmem[0]))
84  ret_swap_used = "{0}".format(self.bytes2human(lsmem[1]))
85  ret_swap_free = "{0}".format(self.bytes2human(lsmem[2]))
86  ret_swap_percent = "{0}".format(lsmem[3])
87  ret_swap_sin = "{0}".format(self.bytes2human(lsmem[4]))
88  ret_swap_sout = "{0}".format(self.bytes2human(lsmem[5]))
89 
90  return ret_swap_total, ret_swap_used, ret_swap_free, ret_swap_percent, ret_swap_sin, ret_swap_sout
91 
92  def getMemoryInfo(self):
93  """
94  START Test Results
95  >>> import psutil
96  >>> p = psutil.Process()
97  >>> p.memory_info()
98  pmem(rss=8536064, vms=5599232)
99  >>> minfo = list(p.memory_info())
100  >>> minfo
101  [8613888, 5672960]
102  >>>
103  END Test Results
104 
105  START return values
106 
107  ret_rss = RSS(Resident Set Size)
108  ret_vms = VMS(Virtual Memory Size)
109 
110  END return values
111  """
112  p = psutil.Process()
113 
114  minfo = list(p.memory_info())
115 
116  ret_rss = "{0}".format(self.bytes2human(minfo[0]))
117  ret_vms = "{0}".format(self.bytes2human(minfo[1]))
118 
119  return ret_rss, ret_vms
120 
121  def getMemoryInfoEx(self):
122  """
123  START Test Results
124  >>> import psutil
125  >>> p = psutil.Process()
126  >>> p.memory_info_ex()
127  pextmem(num_page_faults=2277, peak_wset=8552448, wset=8552448, peak_paged_pool=1
128  00980, paged_pool=100980, peak_nonpaged_pool=4484, nonpaged_pool=4484, pagefile=
129  5607424, peak_pagefile=5607424, private=5607424)
130  >>> minfo = list(p.memory_info_ex())
131  >>> minfo
132  [2297, 8634368, 8634368, 100980, 100980, 4844, 4844, 5681152, 5681152, 5681152]
133  >>>
134  END Test Results
135 
136  START return values
137 
138  a = num_page_faults
139  b = peak_wset
140  c = wset
141  d = peak_paged_pool
142  e = paged_tool
143  f = peak_nonpaged_pool
144  g = nonpaged_pool
145  h = pagefile
146  i = peak_pagefile
147  j = private
148 
149  http://pythonhosted.org/psutil/#psutil.Process.memory_info_ex
150 
151  END return values
152  """
153  p = psutil.Process()
154 
155  minfo_ex = list(p.memory_info_ex())
156 
157  ret_faults = "{0}".format(self.bytes2human(minfo_ex[0]))
158  ret_peak_wset = "{0}".format(self.bytes2human(minfo_ex[1]))
159  ret_wset = "{0}".format(self.bytes2human(minfo_ex[2]))
160  ret_peak_ptool = "{0}".format(self.bytes2human(minfo_ex[3]))
161  ret_paged_tool = "{0}".format(self.bytes2human(minfo_ex[4]))
162  ret_peak_nptool = "{0}".format(self.bytes2human(minfo_ex[5]))
163  ret_nonpaged_tool = "{0}".format(self.bytes2human(minfo_ex[6]))
164  ret_pagefile = "{0}".format(self.bytes2human(minfo_ex[7]))
165  ret_peak_pfile = "{0}".format(self.bytes2human(minfo_ex[8]))
166  ret_private = "{0}".format(self.bytes2human(minfo_ex[9]))
167 
168  return ret_faults, ret_peak_wset, ret_wset, ret_peak_ptool, ret_paged_tool, \
169  ret_peak_nptool, ret_nonpaged_tool, ret_pagefile, ret_peak_pfile, ret_private
170 
171  def getMemoryPercent(self):
172  """
173  START Test Results
174 
175  >>> import psutil
176  >>> p = psutil.Process()
177  >>> p.memory_percent()
178  0.3954443586076075
179  >>> list(p.memory_percent())
180  Traceback (most recent call last):
181  File "<stdin>", line 1, in <module>
182  TypeError: 'float' object is not iterable
183  >>>
184 
185  END Test Results
186  """
187  p = psutil.Process()
188 
189  mpercent = p.memory_percent()
190 
191  ret_mpercent = "{0}".format(mpercent)
192 
193  return ret_mpercent
194 
195  def getMemoryMap(self,poid):
196  """
197  START Test Results
198  PID: 5128
199  Name: conhost.exe
200  RSS: 4.0K
201  Permission: r
202  Path: C:\Windows\System32\apisetschema.dll
203  Total RSS: 24.5M
204  END Test Results
205 
206  START return values
207 
208  PID: Process ID
209  NAME: Process Name
210  RSS: Resident Set Size
211  Permission: Process Permission
212  Path: Process Api Path
213  Total RSS: Total Resident Set Size
214 
215  END return values
216  """
217  p = psutil.Process(int(poid))
218  ret_pid = "{0}".format(p.pid)
219  ret_name = "{0}".format(p.name())
220  total_rss = 0
221  for m in p.memory_maps(grouped=False):
222  total_rss += m.rss
223  ret_rss = "{0}".format(self.bytes2human(m.rss))
224  ret_perm = "{0}".format(m.perms)
225  ret_path = "{0}".format(m.path)
226  ret_total = "{0}".format(self.bytes2human(total_rss))
227 
228  return ret_pid, ret_name, ret_rss, ret_perm, ret_path, ret_total
def getVirtualMemory(self)
Definition: memory.py:36
def getMemoryInfoEx(self)
Definition: memory.py:121
def bytes2human(self, n)
Definition: memory.py:20
def getMemoryInfo(self)
Definition: memory.py:92
def getMemoryMap(self, poid)
Definition: memory.py:195
def getMemoryPercent(self)
Definition: memory.py:171
def getSwapMemory(self)
Definition: memory.py:64