¿Cómo depurar un error de memoria en Python? ¿Herramientas para rastrear el uso de la memoria?

Tengo un programa de Python que muere con un MemoryError cuando lo alimento con un archivo grande. ¿Hay alguna herramienta que pueda usar para averiguar qué está usando la memoria?

Este programa funcionó bien en archivos de entrada más pequeños. El programa obviamente necesita algunas mejoras de escalabilidad; Sólo estoy tratando de averiguar dónde. "Benchmark antes de optimizar", como una persona sabia dijo una vez.

(Solo para evitar la inevitable respuesta "agregar más RAM": esto se ejecuta en una caja de WinXP de 32 bits con 4GB de RAM, por lo que Python tiene acceso a 2GB de memoria utilizable. No es técnicamente posible agregar más memoria. Reinstalar mi PC con 64 -bit Windows no es práctico.)

EDIT: Oops, este es un duplicado de¿Qué perfil de memoria de Python se recomienda?

Respuestas a la pregunta(4)

Su respuesta a la pregunta