Skip to content

Instantly share code, notes, and snippets.

@draganHR
Last active August 3, 2016 12:19
Show Gist options
  • Save draganHR/186f88ff7c9f62dbe2931016bf2f4f7b to your computer and use it in GitHub Desktop.
Save draganHR/186f88ff7c9f62dbe2931016bf2f4f7b to your computer and use it in GitHub Desktop.
import gc
import sys
import operator
def total_size():
return sum(sys.getsizeof(i) for i in gc.get_objects())
def total_count():
return len(gc.get_objects())
def instance_count():
gc.collect()
obj_count = {}
for obj in gc.get_objects():
if getattr(obj, "__class__", None):
name = str(obj.__class__)
if name in obj_count:
obj_count[name] += 1
else:
obj_count[name] = 1
return sorted(obj_count.items(), key=operator.itemgetter(1), reverse=True)
import logging
import memory
logger = logging.getLogger(__name__)
class MemoryMiddleware(object):
def process_request(self, request):
self.log_stats('request')
def process_response(self, request, response):
self.log_stats('response')
return response
def log_stats(self, label):
instance_count = "\n".join([" %s: %d" % row for row in memory.instance_count()[:10]])
logger.info("Memory Stats [%s]\n total_size %s\n total_count %s\n instance_count:\n%s",
label,
memory.total_size(),
memory.total_count(),
instance_count)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment