Asignación de memoria CPython

Este es un post inspirado eneste comentario acerca de cómo se asigna la memoria para los objetos en CPython. Originalmente, esto estaba en el contexto de crear una lista y anexarla en un bucle forvis a vis una lista de comprensión.

Asi que aqui están mis preguntas:

¿Cuántos asignadores diferentes hay en CPython?¿Cuál es la función de cada uno?cuando esmalloc llamado de manera aguda? (una lista de comprensión puede no resultar en una llamada amalloc, basado en lo dicho eneste comentario¿Cuánta memoria se asigna Python para sí misma al inicio?¿Hay reglas que gobiernan qué estructuras de datos obtienen primero "dibs" en esta memoria?¿Qué sucede con la memoria utilizada por un objeto cuando se elimina? (Python aún se mantiene en la memoria para asignarla a otro objeto en el futuro, o el GC libera la memoria para otro proceso, digamos Google Chrome, para usar) ?¿Cuándo se activa un GC?lists son matrices dinámicas, lo que significa que necesitan una parte contigua de memoria. Esto significa que si trato de agregar un objeto a una lista, cuya matriz de estructura de datos C subyacente no puede extenderse, la matriz se copia en una parte diferente de la memoria, donde está disponible un bloque contiguo más grande. Entonces, ¿cuánto espacio se asigna a esta matriz cuando inicializo una lista?¿Cuánto espacio adicional se asigna a la nueva matriz, que ahora contiene la lista anterior y el objeto adjunto?

EDITAR: De los comentarios, deduzco que hay demasiadas preguntas aquí. Solo hice esto porque todas estas preguntas están bastante relacionadas. Aún así, me encantaría dividir esto en varias publicaciones si ese es el caso (por favor, hágamelo saber para hacerlo en los comentarios)

Respuestas a la pregunta(1)

Su respuesta a la pregunta