Вы также можете использовать функцию getrusage()
из стандартного библиотечного модуля resource
. Полученный объект имеет атрибут ru_maxrss
, который дает общее пиковое использование памяти для вызывающего процесса:
>>> import resource
>>> resource.getrusage(resource.RUSAGE_SELF).ru_maxrss
2656
Документы Python неясно, какие именно единицы измерения, но справочная страница Mac OS X для getrusage(2)
описывает единицы в килобайтах.
Справочная страница Linux не ясна, но, похоже, она эквивалентна /proc/self/status
информации (то есть килобайтам), описанной в принятом ответе. Для того же процесса, что и выше, работающего в Linux, функция, указанная в принятом ответе, дает:
>>> memory_usage()
{'peak': 6392, 'rss': 2656}
Это может быть не так просто, как использовать решение /proc/self/status
, но это стандартная библиотека, поэтому (при условии, что модули стандартные) она должна быть кроссплатформенной и использоваться в системах, в которых отсутствует /proc/
( например, Mac OS X и другие Unixes, может быть, Windows).
Кроме того, функция getrusage()
также может быть предоставлена resource.RUSAGE_CHILDREN
для получения использования для дочерних процессов и (в некоторых системах) resource.RUSAGE_BOTH
для общего (собственного и дочернего) использования процесса.
Это будет охватывать случай memory_get_usage()
, но не включает пиковое использование. Я не уверен, что другие функции из модуля resource
могут дать пиковое использование.