Bonjour a tous,

c'est mon premier post ici,

j'ai une bizarrerie sur python et je ne vois pas pourquoi et comment gerer ca. Quelques mots sur le contexte, je charges en memoire (dans une variable python) un fichier volumineux ~5Go (liste de donnee provenant d'une matrice de 28805x28805 elements). Bref, mon probleme est dans le chargement du fichier dans la variable, par exemple si j'execute ce code:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
n    = 100000000
data = [0.0] * n
val  = 1.25e+02
for i in xrange(n):
    data[n] = val
quand j'alloue de la memoire pour la variable, j'utilise ~ 740 Mo, et lorsque la boucle tourne pour remplir la variable data la mémoire reste constante car allouer au debut. Maintenant si j'execute ceci:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
from string import atof
 
n    = 100000000
data = [0.0] * n
val  = '1.25e+02'
for i in xrange(n):
    data[n] = atof(val)
la memoire utiliser au depart est de 740 Mo a l'allocation puis ne cesse d'augmenter pendant ma boucle pour atteindre les 3.9 Go. Je penses que le probleme est que atof me retourne un flottant different du flottant utilise en allocation... qu'elle est le probleme... comment convertir ma chaine de caractere en flottant 32 bit.

Une suggestion ?

Merci