Python 在内存中保存数据? (内存)
Python saving data inside Memory? (ram)
我是 Python 的新手,但我之前还不知道这一点。
我在 for 循环中有一个基本程序,它从站点请求数据并将其保存到文本文件
但是当我检查我的任务管理器时,我发现内存使用量只增加了?当 运行 很长一段时间以来,这对我来说可能是个问题。
这是 Python 执行此操作的标准还是您可以更改它?
这是程序的基本内容
savefile = open("file.txt", "r+")
for i in savefile:
#My code goes here
savefile.write(i)
#end of loop
savefile.close()
Python 在您调用 .close()
或 .flush()
或达到指定的缓冲区大小之前不会写入文件。这个问题可能对你有帮助:How often does python flush to a file?
正如@Almog 所说,Python 不会立即写入文件。因此,您写入文件的每一行都会存储到 RAM 中,直到您使用 savefile.close()
,它会刷新内部缓冲区并将所有内容写入文件。这将解释额外的内存使用情况。
尝试将循环更改为:
savefile = open('file.txt', 'r+')
for i in savefile:
savefile.write(i)
savefile.flush() #flushes buffer, saving RAM
savefile.close()
有一个更好的解决方案,以 pythonic 方式解决这个问题:
with open("your_file.txt", "write_mode") as file_variable_name:
for line in file_name:
file_name.write(line)
file_name.flush()
此代码为每一行刷新文件,并在执行后关闭文件,这要归功于 with-Statement
我是 Python 的新手,但我之前还不知道这一点。 我在 for 循环中有一个基本程序,它从站点请求数据并将其保存到文本文件 但是当我检查我的任务管理器时,我发现内存使用量只增加了?当 运行 很长一段时间以来,这对我来说可能是个问题。 这是 Python 执行此操作的标准还是您可以更改它? 这是程序的基本内容
savefile = open("file.txt", "r+")
for i in savefile:
#My code goes here
savefile.write(i)
#end of loop
savefile.close()
Python 在您调用 .close()
或 .flush()
或达到指定的缓冲区大小之前不会写入文件。这个问题可能对你有帮助:How often does python flush to a file?
正如@Almog 所说,Python 不会立即写入文件。因此,您写入文件的每一行都会存储到 RAM 中,直到您使用 savefile.close()
,它会刷新内部缓冲区并将所有内容写入文件。这将解释额外的内存使用情况。
尝试将循环更改为:
savefile = open('file.txt', 'r+')
for i in savefile:
savefile.write(i)
savefile.flush() #flushes buffer, saving RAM
savefile.close()
有一个更好的解决方案,以 pythonic 方式解决这个问题:
with open("your_file.txt", "write_mode") as file_variable_name:
for line in file_name:
file_name.write(line)
file_name.flush()
此代码为每一行刷新文件,并在执行后关闭文件,这要归功于 with-Statement