Comment puis-je le profil d'utilisation de la mémoire en Python?

J'ai récemment intéressé à des algorithmes et ont commencé à explorer par la rédaction d'un naïf mise en œuvre et l'optimisation de différentes manières.

Je suis déjà familier avec la norme module Python pour le profilage d'exécution (pour la plupart des choses que j'ai trouvé le timeit fonction magique dans IPython être suffisant), mais je suis aussi intéressé par l'utilisation de la mémoire afin que je puisse explorer les inconvénients (p. ex. le coût de la mise en cache d'une table de valeurs précédemment calculées rapport à recalculer si nécessaire). Est-il un module qui sera le profil de l'utilisation de la mémoire d'une fonction donnée pour moi?