Cast de données - problème mémoire
Bonjour!
En réalisant les opérations, Python ne semble pas libérer correctement la mémoire allouée:
Code:
1 2 3 4
|
ls = [ ['1.0'] * 3000 for i in range(20000)]
ls = [map(float, row) for row in ls] |
ou
Code:
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]) |
Je ne comprends pas pourquoi l'espace mémoire alloué est largement supérieur à celui que possède la liste de liste de float.
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)