From 09f4abea84fb18922caa9f80e62070124793d791 Mon Sep 17 00:00:00 2001 From: ipsum Date: Fri, 12 Mar 2010 18:13:02 -0500 Subject: [PATCH] i'm an idiot and overwrote mem.py - reverting mem.py --- plugins/mem.py | 91 +++++++++++++++++--------------------------------- 1 file changed, 30 insertions(+), 61 deletions(-) diff --git a/plugins/mem.py b/plugins/mem.py index b65d882..f80cefa 100644 --- a/plugins/mem.py +++ b/plugins/mem.py @@ -1,61 +1,30 @@ - -import os -import re - -from util import hook - -@hook.command -def mem(bot): - ".mem -- returns bot's current memory usage" - - if os.name=='posix': - return posixmem() - if os.name=='nt': - return ntmem() - - return mem.__doc__ - - -def posixmem(): - return _VmB('Size: ') + ' ' + _VmB('Resident:') + ' ' + _VmB('Stack:') - -def ntmem(): - pid = os.getpid() - total = 0 - - cmd = "tasklist /FI \"PID eq {0}\" /FO CSV /NH".format(pid) - e = re.compile("[,0-9]+ K") - - meml = re.findall(e,os.popen(cmd).read()) - - if not mem1[0]: - return 'This os does not have the tasklist command installed' - - for mem in meml: - total += int(mem.rstrip(" K").replace(",","")) - - return 'Bot mem usage: ' + str(total) + ' K' - -def _VmB(Key): - '''Private''' - - _proc_status = '/proc/%d/status' % os.getpid() - - _scale = {'kB': 1024.0, 'mB': 1024.0*1024.0, - 'KB': 1024.0, 'MB': 1024.0*1024.0} - - # get pseudo file /proc//status - try: - t = open(_proc_status) - v = t.read() - t.close() - except: - return 0.0 - - # get Key line e.g. 'VmRSS: 9999 kB\n ...' - i = v.index(Key) - v = v[i:].split(None, 3) - if len(v) < 3: - return 0.0 - - return float(v[1]) * _scale[v[2]] +import os +import re + +from util import hook + + +@hook.command +def mem(inp): + ".mem -- returns bot's current memory usage -- linux/windows only" + + if os.name == 'posix': + status_file = open("/proc/%d/status" % os.getpid()).read() + line_pairs = re.findall(r"^(\w+):\s*(.*)\s*$", status_file, re.M) + status = dict(line_pairs) + keys = 'VmSize VmLib VmData VmExe VmRSS VmStk'.split() + return ', '.join(key + ':' + status[key] for key in keys) + + elif os.name == 'nt': + cmd = "tasklist /FI \"PID eq %s\" /FO CSV /NH" % os.getpid() + out = os.popen(cmd).read() + + total = 0 + for amount in re.findall(r'([,0-9]+) K', out): + total += int(amount.replace(',', '')) + + return 'memory usage: %d kB' % total + + return mem.__doc__ + +print mem('')