Skip to content

Commit

Permalink
ENH: use psutil module to provide output for debug vmem metric
Browse files Browse the repository at this point in the history
if psutil is not present it would fall back to the previous ad-hoc
parsing of /proc/*/status
  • Loading branch information
yarikoptic committed Aug 22, 2011
1 parent 6538fb6 commit 0b0ddf5
Showing 1 changed file with 18 additions and 2 deletions.
20 changes: 18 additions & 2 deletions mvpa2/base/verbosity.py
Original file line number Diff line number Diff line change
Expand Up @@ -377,6 +377,7 @@ def print_registered(self, detailed=True):
from os.path import basename, dirname

__pymvpa_pid__ = getpid()

def parse_status(field='VmSize'):
"""Return stat information on current process.
Expand All @@ -398,6 +399,21 @@ def parse_status(field='VmSize'):
pass
return match

try:
# we prefer to use psutil if available
# and let's stay away from "externals" module for now
from psutil import Process
__pymvpa_process__ = Process(__pymvpa_pid__)

def get_vmem():
mi = __pymvpa_process__.get_memory_info()
vms = mi.vms/1024
rss = mi.rss/1024
return "RSS/VMS: %d/%d KB" % (rss, vms)

except ImportError:
get_vmem = lambda: parse_status(field='VmSize')

def mbasename(s):
"""Custom function to include directory name if filename is too common
Expand Down Expand Up @@ -487,8 +503,8 @@ class DebugLogger(SetLogger):
_known_metrics = {
# TODO: make up Windows-friendly version or pure Python platform
# independent version (probably just make use of psutil)
'vmem' : lambda : parse_status(field='VmSize'),
'pid' : lambda : parse_status(field='Pid'),
'vmem' : get_vmem,
'pid' : getpid, # lambda : parse_status(field='Pid'),
'asctime' : time.asctime,
'tb' : TraceBack(),
'tbc' : TraceBack(collide=True),
Expand Down

0 comments on commit 0b0ddf5

Please sign in to comment.