Профиль памяти Python с использованием psutil - PullRequest
0 голосов
/ 13 мая 2018

Я пытаюсь использовать psutil для измерения использования памяти. Тем не менее, я обнаружил странное поведение, которое, даже если я ничего не сохраняю и не загружаю, я вижу, что использование памяти продолжает увеличиваться во вложенном цикле for. Например, если я запускаю следующий код,

import os
import psutil
for i in range(10):
    print(i)
    for j in range(5):
        mem_usage = psutil.Process(os.getpid()).memory_info()[0] / 2 ** 20
        print("{}{} MB".format(j,mem_usage))

Я получаю следующий вывод

0
0178 MB
1178 MB
2178 MB
3178 MB
4178 MB
1
0178 MB
1178 MB
2178 MB
3178 MB
4178 MB

Что здесь происходит?

Разве psutil не делает то, что я собираюсь сделать?

1 Ответ

0 голосов
/ 14 мая 2018

Это неверное форматирование вашей строки:

"{}{} MB".format(j,mem_usage)

Между "j" и "mem_usage" нет пробела, поэтому похоже, что память увеличивается, когда это не так.Кроме того, ваша математика для расчета МБ неверна.Должно быть:

import os
import psutil

p = psutil.Process(os.getpid())
for i in range(10):
    print(i)
    for j in range(5):
        mem_usage = p.memory_info().rss / 1024 / 1024
        print("{} {} MB".format(j, mem_usage))
...