Bienvenue sur IndexError.

Ici vous pouvez poser des questions sur Python et le Framework Django.

Mais aussi sur les technos front comme React, Angular, Typescript et Javascript en général.

Consultez la FAQ pour améliorer vos chances d'avoir des réponses à vos questions.

Explosion de la RAM en utilisant DataFrame

0 votes

Bonjour,

Dans un process métiers sur des données (un process correspond une classe en python), gros volume quelque millions de lignes, j'applique plusieurs traitements sur un objet DataFrame, en total 15 traitements différents, avec des objet dataframes temporaires.
A partir de la 9ème ou la 10ème traitrement j'ai un message "MemoryError", et si je désactives les 9 premiers traitements, le process va jusqu'à la fin.
A quel moment python détruit les objets intermédiaires? je supposes à chaque fois hors scope.
Merci

demandé 9-Aou par anonyme

1 Réponse

0 votes

Tant que les données que tu manipules restent accessible depuis ton code, python n'a aucune raison de les détruire et ne le fait donc pas. Sans quoi, tout accès ultérieur se solderait par un échec...

En revanche, les données réellement intermédiaires (par ex. celles que tu déclares dans une fonction et qui deviennent inaccessible une fois que la fonction termine), sont elles bien prises en charge par le Garbage Collector.

Apres, ça ne signifie pas forcément qu'elles sont nettoyées immédiatement, mais ce genre de problème ne devrait plus se poser, ou du moins seulement dans des circonstances rares.

répondu 9-Aou par yoch (2,486 points)
...