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

cry*_*to5 1 python buffer file flush

我制作了简单的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()
Run Code Online (Sandbox Code Playgroud)

当我使用CPython启动它时,它会占用所有可用的操作系统内存,并且不会向该文件写入任何内容

当我在Jython上启动时,我得到了OutOfMemoryException.

据我所知,它将所有内容存储在内存缓冲区中,并且在close()调用之前从未进行过刷新.

我的问题是:如何限制文件缓冲区并触发autoflush?我不想flush()手动调用,从性能的角度来看,我认为这是错误的.我希望flush()在文件缓冲区过载时自动调用.

谢谢!

mob*_*mob 9

缓冲不是问题.问题是range()使用一个巨型参数调用该函数,该参数将尝试分配包含大量元素的数组.如果你只是说,你会得到同样的错误

r = range(100000000)
Run Code Online (Sandbox Code Playgroud)

  • 尝试在xrange(10000000)中使用`for i. (6认同)
  • 将范围更改为xrange (2认同)