- 此问题在此处已有答案**:
Is it better to open/close a file every time vs keeping it open until the process is finished?(4个答案)
18小时前关门了。
我很好奇,无论何时需要,调用open()函数进行文件写入/追加与在整个程序中打开连接之间是否存在性能或资源差异。
所以基本上
with open('random.log', 'w') as f:
f.write('new log1')
.
.
.
with open('random.log', 'w') as f:
f.write('new log2')
.
.
.
with open('random.log', 'w') as f:
f.write('new log3')
对比
with open('random.log', 'w') as f:
f.write('new log1')
.
.
.
f.write('new log2')
.
.
.
f.write('new log3')
我想知道在需要多个文件操作的情况下使用Python中的open()方法的最佳实践。
4条答案
按热度按时间wf82jlnq1#
保持文件打开直到你不再需要它是非常有效的,所以如果你需要在整个程序中保持它打开,那么在程序结束之前不应该关闭它。
每次对
open()
的调用都会对操作系统发出一个syscall(“system call”的缩写),要求它为程序做一些特殊的事情,比如打开/关闭文件,从网络获取数据,或者其他各种事情。syscall的开销更大,因为它们必须通过操作系统,而不仅仅是Python标准库,所以只有在必要的时候才能调用它们。为了证明这一点,我用
timeit
对两个示例进行了计时:这是结果:
调用
open()
一次几乎快了3倍!goqiplq22#
我运行以下代码进行测试:
这将给出以下输出:
我并不感到惊讶,因为“打开”一个文件需要一些时间,你做得越少,代码就越快。
bcs8qyzn3#
我看到的唯一区别是,一开始,你是多次打开同一个文件并写入它。在第二个场景中,你是打开它一次并写入,然后执行一些操作,然后再次写入而不关闭它。在我看来,最好打开文件一次并执行操作,然后使用close将其关闭()。第一种方法可能会占用一些额外的时间,因为您要多次打开同一个文件(并假设您每次都关闭它们)。然而,这两种方法都不应该消耗太多的资源或花费太长的时间,除非您采用第一种方法并且涉及大量的阅读和其他操作。这是我的观点,但这里有一些资源,以获得进一步的信息:Quora Q/A
k4emjkb14#
开函数('random.log','w')为f:f.写(“新的log1”)......并打开(“随机. log”,“w”)作为f:f.写(“新log2”)......并打开(“随机. log”,“w”)作为f:f.写入(“新log3”)与
开函数('random.log','w')为f:f.写入(“新日志1”)... f.写入(“新日志2”)... f.写入(“新日志3”)