Cassiopee Forum
CFD python modules
S'il vous plaît connectez vous ou Enregistrement'.
Date et heure en ce moment : lundi, 11 décembre 2017, 03:06

Cassiopee Forum :: Discussions, suggestions, bug report :: Converter :: Problème de release mémoire avec Converter  ::
Sylvain Mouton
Junior Member
Image


Messages: 66
Problème de release mémoire avec Converter (jeudi, 16 juin 2011, 09:50)  
Bonjour,

Je détecte un problème de memory release dans Converter.
Après l'écriture d'un arbre python dans un fichier, et même s'il n'y a plus de référence sur l'arbre en question dans le script, et même en introduisant volontairement un del(t), la place mémoire occupée par l'arbre n'est jamais libérée jusqu'à la fin de l'exécution de python.

J'ai fait un petit script pour mettre en évidence le problème, et qui reproduit la façon de procéder de notre script original :
L'examen de la mémoire pendant les time.sleep() révèle que l'on utilise presque rien pendant 30s (normal), puis que la mémoire se remplit lors de l'écriture (normal), mais ne se vide pas à la fin de la fonction manipulate.
De plus, si j'active également l'écriture au format 'bin_tp', l'occupation mémoire est doublée au moment de l'écriture (peut-être normal), mais de même jamais libérée.

[testMemoryReleaseMain.py] :
from testMemoryRelease import manipulate
import time

filename = 'someBigFile.cgns'
time.sleep(30)
manipulate(filename)
time.sleep(30)

[testMemoryRelease.py] :
import Converter.PyTree
def manipulate(filename):
t = Converter.PyTree.convertFile2PyTree(filename)
Converter.PyTree.convertPyTree2File(t,'toto.cgns')
# Converter.PyTree.convertPyTree2File(t,'toto.plt',format='bin_tp')
# del(t)

Ip enregistré Statut: déconnecté Profil | Site Web 
Ordre des réponses: Première réponse en dernier :: Première réponse en premier
ChristopheBenoit
Administrator
Image


Messages: 169
RE: Problème de release mémoire avec Converter (jeudi, 7 juillet 2011, 17:34)  
Je n'ai pas réussi à reproduire ce bug.
Si je lis en boucle ou j'écris en boucle un fichier:

t = C.convertFile2PyTree('fine_mesh5.cgns')
for i in xrange(100):
C.convertPyTree2File(t, 'toto.cgns')

La mémoire reste stable.
Il est normal que t reste en mémoire à la fin de manipulate.
Il est aussi possible que python garde la mémoire du process, meme si elle est libre, pour y mettre les futurs allocations.

Il est aussi normal (pour l'instant) que la mémoire double à l'écriture en tp (à cause d'une copie interne). Mais ca devrait s'améliorer dans l'avenir.
a+

Ip enregistré Statut: déconnecté Profil | Site Web 
Nouvelle discussion - Discussion barrée, pas de réponse possible

Software PBLang 4.65 © 2002-2003 by Martin Senftleben
Image