2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 Python, измерить потребление памяти
Сообщение18.04.2022, 14:24 
Доброе утро. Я написал программу которая правильно выполняет поставленную задачу, насколько я могу судить по предоставленному примеру ввода и вывода, но не удовлетворяет требованию: Ограничение памяти 64Mb

Как бы мне выяснить сколько памяти потребляет моя программа? А ещё лучше какая часть моей программы является самой прожорливой? Нашёл одно возможное решение, но оно использует некую стороннюю библиотеку:
https://stackoverflow.com/questions/985 ... n-function
Может как то средствами стандартной возможно обойтись?

На всякий случай код программы, один а иногда два цикла выполняются в условиях ограничений по памяти, присваивание всем переменным нулей в конце цикла это моя попытка "очистить память"
код: [ скачать ] [ спрятать ]
Используется синтаксис Python
from pymorphy2 import MorphAnalyzer

for i in range(9):
    adjf, noun = input().strip().split()
    noun_a = MorphAnalyzer().parse(noun)[0]
    adjf_a = MorphAnalyzer().parse(adjf)[0]
    if str(noun_a.tag).split(',')[0] == 'ADJF':
        noun, adjf = adjf, noun
        noun_a, adjf_a = adjf_a, noun_a
    a, b, c, d = tuple(str(noun_a.tag).split(','))
    c1, c2 = c.split()
    if c2 == 'plur':
        print(adjf_a.inflect({c2, d}).methods_stack[0][1], end=' ')
    else:
        print(adjf_a.inflect({c1, c2, d}).methods_stack[0][1], end=' ')
    print(noun)
    adjf = 0
    noun = 0
    noun_a = 0
    adjf_a = 0
    a = 0
    b = 0
    c = 0
    d = 0
    c1 = 0
    c2 = 0

 
 
 
 Re: Python, измерить потребление памяти
Сообщение18.04.2022, 15:33 
Аватара пользователя
Легко гуглится https://docs.python.org/3/library/tracemalloc.html. А для очистки памяти стоит покопаться в https://docs.python.org/3/library/gc.html (и использовать del, а не перезаписывать значение переменной) - если с точки зрения интерпретатора памяти достаточно, а за ней следит что-то внешнее, то он очень вряд ли будет освобождать используемую память сразу.
Какой размер входа? Если разумный, то я бы предположил, что проблема в pymorphy2. Наверняка как минимум не надо создавать MorphAnalyzer много раз.

 
 
 
 Re: Python, измерить потребление памяти
Сообщение18.04.2022, 15:43 
mihaild
Спасибо, получилось

 
 
 [ Сообщений: 3 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group