【发布时间】:2021-07-05 23:28:56
【问题描述】:
我正在尝试使用相同的文本创建一个大文件,但我的系统在一段时间后执行脚本后挂起。
the_text = "This is the text I want to copy 100's of time"
count = 0
while True:
the_text += the_text
count += 1
if count > (int)1e10:
break
注意:以上是我的代码的过度简化版本。我想多次创建一个包含相同文本的文件,文件大小约为27GB。
我知道这是因为 RAM 过载。这就是我想知道如何在 python 中快速有效地做到这一点。
【问题讨论】:
-
内存不足不足为奇;所以不要在内存中累积大量字符串 - 即将字符串(行)写入文件并且不要继续将它们添加到内存中的累积字符串中
-
也可以分块写入,比如一次 512 行。您可以将字符串加倍以构建要写入的字符串。
-
写“一个字符串”*10000,应该会更好。例如:>>> "test\n"*10 'test\ntest\ntest\ntest\ntest\ntest\ntest\ntest\ntest\ntest\n'