Python在内存中保存数据?(ram)
我是Python新手,但直到现在我才知道这一点。 我在for循环中有一个基本程序,它从站点请求数据并将其保存到文本文件中 但是当我检查任务管理器内部时,我发现内存使用只会增加?这对我来说可能是一个问题,当运行这个很长时间。 这是Python的标准做法还是可以更改? 下面是一个程序的基本内容Python在内存中保存数据?(ram),python,file,memory,save,Python,File,Memory,Save,我是Python新手,但直到现在我才知道这一点。 我在for循环中有一个基本程序,它从站点请求数据并将其保存到文本文件中 但是当我检查任务管理器内部时,我发现内存使用只会增加?这对我来说可能是一个问题,当运行这个很长时间。 这是Python的标准做法还是可以更改? 下面是一个程序的基本内容 savefile = open("file.txt", "r+") for i in savefile: #My code goes here savefile.write(i) #end
savefile = open("file.txt", "r+")
for i in savefile:
#My code goes here
savefile.write(i)
#end of loop
savefile.close()
Python在调用
.close()
或.flush()
或达到指定的缓冲区大小之前不会写入文件。这个问题可能会帮助您:正如@Almog所说,Python不会立即写入文件。因此,在使用savefile.close()
,刷新内部缓冲区并将所有内容写入文件之前,写入文件的每一行都会存储到RAM中。这可以解释额外的内存使用
尝试将循环更改为:
savefile = open('file.txt', 'r+')
for i in savefile:
savefile.write(i)
savefile.flush() #flushes buffer, saving RAM
savefile.close()
对于这一点,有一个更好的解决方案,以pythonic的方式:
打开(“your_file.txt”,“write_mode”)作为文件变量名称:
对于文件名中的行:
文件名。写入(行)
文件名.flush()
这段代码为每一行刷新文件,在执行之后,由于with语句,它关闭了文件啊,太好了,我刚刚检查了它,它的大小为18MB,因此我认为这是为什么。我会查一查的,谢谢你,先生!请注意,要将其刷新到实际磁盘,您可能还需要调用
os.fysnc()
很好的示例,我喜欢它,它看起来稳定在18mb,所以没什么大不了的。我不明白为什么会有缓冲区,这是因为ram比hdd快得多,所以它可以一次写入所有内容,而不是一个接一个地写入。或者是因为某些文件运行速度非常快,从而使硬盘无法跟上程序的速度?@Uber-每次添加一行代码时都写入磁盘是非常低效的。总的来说,电脑最好等着把所有的东西都写下来。是的,我查过了。我会保持原样,因为它不会超过18.5mb。谢谢你的帮助!