Tracking *maximum* memory usage by a Python function

前端 未结 8 1691
轻奢々
轻奢々 2020-12-02 09:07

I want to find out what the maximum amount of RAM allocated during the call to a function is (in Python). There are other questions on SO related to tracking RAM usage:

8条回答
  •  天涯浪人
    2020-12-02 09:51

    It is possible to do this with memory_profiler. The function memory_usage returns a list of values, these represent the memory usage over time (by default over chunks of .1 second). If you need the maximum, just take the max of that list. Little example:

    from memory_profiler import memory_usage
    from time import sleep
    
    def f():
        # a function that with growing
        # memory consumption
        a = [0] * 1000
        sleep(.1)
        b = a * 100
        sleep(.1)
        c = b * 100
        return a
    
    mem_usage = memory_usage(f)
    print('Memory usage (in chunks of .1 seconds): %s' % mem_usage)
    print('Maximum memory usage: %s' % max(mem_usage))
    

    In my case (memory_profiler 0.25) if prints the following output:

    Memory usage (in chunks of .1 seconds): [45.65625, 45.734375, 46.41015625, 53.734375]
    Maximum memory usage: 53.734375
    

提交回复
热议问题