#python #multiprocessing #python-multiprocessing #memory-profiling #guppy
Вопрос:
Я использовал как memory_profiler, так и guppy3 для профилирования использования памяти моей программой на python, но получил совершенно разные результаты. Мои эксперименты сосредоточены на многопроцессорной обработке, поэтому позвольте мне показать вам простой пример:
Допустим, у нас есть список: l = [(1, 2), (3, 4), (5, 6), (7, 8), (9, 10), (2, 3), (4, 5), (6, 7), (8, 9)]
и функция:
def f(x):
time.sleep(1)
x1 = x 1
if x1 > 5:
return x1
и еще одна функция для многопроцессорной обработки:
def myfunc():
p = Pool(4)
a = [x for (x, y) in l]
p.map_async(f, a)
p.close()
p.join()
Однако результат guppy3 показывает что-то вроде этого:
Использование Памяти После Создания Объектов : 0,3077840805053711 МБ
И memory_profiler показывает примерно следующее: общий график mprof
Есть идеи? И есть ли у вас какие-либо рекомендации по профилированию использования многопроцессорной памяти в python?