*Really* optimized objects command.

This commit is contained in:
Jeremy Fincher 2003-08-07 09:19:40 +00:00
parent 02ce886b55
commit abd94e32fb
1 changed files with 19 additions and 8 deletions

View File

@ -480,15 +480,26 @@ class FunCommands(callbacks.Privmsg):
"""takes no arguments.
Returns the number and types of Python objects in memory."""
def istype(t):
return lambda x: isinstance(x, t)
classes = 0
functions = 0
modules = 0
dicts = 0
lists = 0
tuples = 0
objs = gc.get_objects()
classes = ilen(itertools.ifilter(inspect.isclass, objs))
functions = ilen(itertools.ifilter(inspect.isroutine, objs))
modules = ilen(itertools.ifilter(inspect.ismodule, objs))
dicts = ilen(itertools.ifilter(istype(dict), objs))
lists = ilen(itertools.ifilter(istype(list), objs))
tuples = ilen(itertools.ifilter(istype(tuple), objs))
for obj in objs:
if isinstance(obj, tuple):
tuples += 1
elif inspect.isroutine(obj):
functions += 1
elif isinstance(obj, dict):
dicts += 1
elif isinstance(obj, list):
lists += 1
elif inspect.isclass(obj):
classes += 1
elif inspect.ismodule(obj):
modules += 1
response = 'I have %s objects: %s modules, %s classes, %s functions, '\
'%s dictionaries, %s lists, and %s tuples (and a few other'\
' different types).' %\