Source code for flexget.plugins.output.memusage
from loguru import logger
from flexget import options, plugin
from flexget.event import event
from flexget.terminal import console
try:
from guppy import hpy
except ImportError:
# this will leave the plugin unloaded
raise plugin.DependencyError(issued_by='memusage', missing='guppy3', silent=True)
logger = logger.bind(name='mem_usage')
# http://blog.mfabrik.com/2008/03/07/debugging-django-memory-leak-with-trackrefs-and-guppy/
#
# # Print memory statistics
# def update():
# print heapy.heap()
#
# # Print relative memory consumption since last cycle
# def update():
# print heapy.heap()
# heapy.setref()
#
# # Print relative memory consumption w/heap traversing
# def update()
# print heapy.heap().get_rp(40)
# heapy.setref()
heapy = None
[docs]
@event('manager.startup')
def on_manager_startup(manager):
if not manager.options.mem_usage:
return
global heapy
heapy = hpy()
[docs]
@event('manager.shutdown')
def on_manager_shutdown(manager):
if not manager.options.mem_usage:
return
try:
import resource
console(
f'Resource Module memory usage: {resource.getrusage(resource.RUSAGE_SELF).ru_maxrss} (kb)'
)
except ImportError:
console('Resource Module memory usage:')
global heapy
console('Heapy module calculating memory usage:')
console(heapy.heap())
console('-' * 79)
console('Heapy module calculating report (this may take a while):')
console(heapy.heap().get_rp(40))
heapy = None
[docs]
@event('options.register')
def register_parser_arguments():
options.get_parser().add_argument(
'--mem-usage',
action='store_true',
dest='mem_usage',
default=False,
help='display memory usage debug information',
)