Я сделал простую программу на 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()
Когда я запускаю его с помощью CPython, он съедает всю доступную память ОС и ничего не записывает в файл.
Когда я запускаю его на Jython, я получаю OutOfMemoryException
.
Насколько я понимаю, он хранит все в буфере памяти и никогда не сбрасывал до вызова close()
.
Мой вопрос: как ограничить файловый буфер и запустить автоочистку? Я не хочу вызыватьflush()
вручную, я думаю, что это неправильно с точки зрения производительности. Я хочу, чтобы flush()
вызывался автоматически, когда файловый буфер перегружен или около того.
Спасибо!
str(i) + "\t" + str(random.randint(0,1000)) + "\n"
обычно записывается как%d\t%d\n" % (i, random.randint(0,1000))
. Это более распространенный стиль, он более надежен и может иметь лучшую производительность. - person Mike Graham   schedule 26.02.2010