J'ai fait simple programme de python pour générer grand fichier texte:écriture dans le fichier ne se contente pas de rinçage et automatiquement provoquer de mémoire en Python
import sys
import random
f = open('data.txt', 'w')
for i in range(100000000):
f.write(str(i) + "\t" + str(random.randint(0,1000)) + "\n")
f.close()
Quand je lance à l'aide CPython il manger toute la mémoire OS disponible et N'écris rien dans le fichier.
Lorsque je lance sur Jython je reçois OutOfMemoryException
.
Pour autant que je comprends tout stocke dans la mémoire tampon et jamais avant affleurant close()
appel.
Ma question est: comment limiter le tampon de fichier et déclencher autoflush? Je ne veux pas appeler manuellement flush()
, je pense que c'est mal du point de vue des performances. Je veux flush()
être appelé automatiquement lorsque le tampon de fichier est surchargé ou plus.
Merci!
Notez que str (i) + "\ t" + str (random.randint (0,1000)) + "\ n" 'serait normalement écrit '% d \ t% d \ n"% (i, random.randint (0,1000)) '. Ceci est un style plus commun, est plus robuste, et peut avoir de meilleures performances –