我制作了简单的 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()
。
谢谢!
最佳答案
缓冲不是问题。问题是使用一个巨大的参数调用 range()
函数,这将尝试分配一个包含大量元素的数组。如果你只是说你会得到同样的错误
r = range(100000000)
关于python - 写入文件不会自动刷新内容并导致 Python 内存不足,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2343600/