Bonjour!
En réalisant les opérations, Python ne semble pas libérer correctement la mémoire allouée:
ou
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 ls = [ ['1.0'] * 3000 for i in range(20000)] ls = [map(float, row) for row in ls]
Je ne comprends pas pourquoi l'espace mémoire alloué est largement supérieur à celui que possède la liste de liste de float.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 ls = [ ['1.0'] * 3000 for i in xrange(20000)] for i in range(len(ls)): for j in range(len(ls[i])): ls[i][j] = float(ls[i][j])
Un del ne règle pas le problème, et gc.collect() n'a pas l'air d'arranger réellement les choses.
Idem pour la v2 du code avec une variable intermédiaire...
Quelqu'un a une idée de ce qui se passe vraiment pour que mes 2Go et mon swap aillent jusqu'à se remplir entièrement? (Testé sous Python 2.6.4 et 2.3)
Partager