memory_profiler 不会在代码运行时进行分析,而是在之后显示结果

问题描述 投票:0回答:0

我已经从这里尝试过这段代码

from memory_profiler import profile

@profile
def main_func():
    import random

    for f in range(10):

        arr1 = [random.randint(1,10) for i in range(100000)]
        arr2 = [random.randint(1,10) for i in range(100000)]
        arr3 = [arr1[i]+arr2[i] for i in range(100000)]
        del arr1
        del arr2
        tot = sum(arr3)
        del arr3
        print(tot)

if __name__ == "__main__":
    main_func()

然后当我从命令行运行时:

python -m memory_profiler example1.py

分析的结果只在整个执行之后出现,而不是在执行期间(我想看看内存消耗的演变during执行)

Filename: example1.py

Line #    Mem usage    Increment  Occurrences   Line Contents
=============================================================
     3     17.9 MiB     17.9 MiB           1   @profile
     4                                         def main_func():
     5     17.9 MiB      0.0 MiB           1       import random
     6                                         
     7     21.0 MiB      0.0 MiB          11       for f in range(10):
     8                                         
     9     21.0 MiB      0.8 MiB     1000030           arr1 = [random.randint(1,10) for i in range(100000)]
    10     21.0 MiB      1.5 MiB     1000030           arr2 = [random.randint(1,10) for i in range(100000)]
    11     21.0 MiB      0.8 MiB     1000030           arr3 = [arr1[i]+arr2[i] for i in range(100000)]
    12     21.0 MiB      0.0 MiB          10           del arr1
    13     21.0 MiB      0.0 MiB          10           del arr2
    14     21.0 MiB      0.0 MiB          10           tot = sum(arr3)
    15     21.0 MiB      0.0 MiB          10           del arr3
    16     21.0 MiB      0.0 MiB          10           print(tot)
python memory-management
© www.soinside.com 2019 - 2024. All rights reserved.