Skip to main content
 首页 » 编程设计

python之写入文件不会自动刷新内容并导致 Python 内存不足

2025年05月04日12davidwang456

我制作了简单的 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)