getting memory usage of varaibles

Terry Reedy tjreedy at udel.edu
Wed May 3 18:15:48 EDT 2017


On 5/3/2017 8:40 AM, Larry Martell wrote:
> On Wed, May 3, 2017 at 8:29 AM, Chris Angelico <rosuav at gmail.com> wrote:
>> On Wed, May 3, 2017 at 10:12 PM, Larry Martell <larry.martell at gmail.com> wrote:
>>> On Wed, May 3, 2017 at 12:57 AM, Chris Angelico <rosuav at gmail.com> wrote:
>>>> On Wed, May 3, 2017 at 5:53 AM, Larry Martell <larry.martell at gmail.com> wrote:
>>>>> And I can see it getting larger and larger. But I want to see what it
>>>>> is that is causing this. My thought was to put all the objects in a
>>>>> dict with their sizes and compare them as the program runs and report
>>>>> on the one that are growing. But I can't get the name of the object
>>>>> from gc.get_objects only the id.
>>>>
>>>> Coming right back to the beginning here: What do you expect the name
>>>> of an object to be?
>>>
>>> The name of the variable in the program, e.g. sql, db_conn, rows, etc.
>>
>> Name bindings are one-way. You can't go from the object to its name.
>> An object may have zero, one, or multiple names; and function-local
>> names could be used more than once.
> 
> Yeah, that makes sense.
> 
>> If you want an object to have a name for tracing purposes, you'll have
>> to give it one as some sort of attribute.

> A good trick to know. Thanks.

Python already uses this trick for functions, classes, and modules by 
giving them .__name__ attribute.  Code objects have a .co_name 
attribute.  These are used for tracing and tracebacks.


-- 
Terry Jan Reedy




More information about the Python-list mailing list