Skip to content

Instantly share code, notes, and snippets.

@ricrogz
Forked from bosswissam/pysize.py
Last active October 14, 2017 23:14
Show Gist options
  • Select an option

  • Save ricrogz/bfdedea1927b3c144523f1453e2cf50f to your computer and use it in GitHub Desktop.

Select an option

Save ricrogz/bfdedea1927b3c144523f1453e2cf50f to your computer and use it in GitHub Desktop.

Revisions

  1. ricrogz renamed this gist Oct 14, 2017. 1 changed file with 0 additions and 0 deletions.
    File renamed without changes.
  2. @bosswissam bosswissam revised this gist Jul 21, 2016. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion pysize.py
    Original file line number Diff line number Diff line change
    @@ -16,6 +16,6 @@ def get_size(obj, seen=None):
    size += sum([get_size(k, seen) for k in obj.keys()])
    elif hasattr(obj, '__dict__'):
    size += get_size(obj.__dict__, seen)
    elif hasattr(obj, '__iter__'):
    elif hasattr(obj, '__iter__') and not isinstance(obj, (str, bytes, bytearray)):
    size += sum([get_size(i, seen) for i in obj])
    return size
  3. @bosswissam bosswissam renamed this gist Jul 21, 2016. 1 changed file with 0 additions and 0 deletions.
    File renamed without changes.
  4. @bosswissam bosswissam created this gist Jul 21, 2016.
    21 changes: 21 additions & 0 deletions pysize
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,21 @@
    import sys

    def get_size(obj, seen=None):
    """Recursively finds size of objects"""
    size = sys.getsizeof(obj)
    if seen is None:
    seen = set()
    obj_id = id(obj)
    if obj_id in seen:
    return 0
    # Important mark as seen *before* entering recursion to gracefully handle
    # self-referential objects
    seen.add(obj_id)
    if isinstance(obj, dict):
    size += sum([get_size(v, seen) for v in obj.values()])
    size += sum([get_size(k, seen) for k in obj.keys()])
    elif hasattr(obj, '__dict__'):
    size += get_size(obj.__dict__, seen)
    elif hasattr(obj, '__iter__'):
    size += sum([get_size(i, seen) for i in obj])
    return size