【问题标题】:When writing large data into .csv file, is it better to open and close file often?将大数据写入.csv文件时,经常打开和关闭文件会更好吗?
【发布时间】:2015-06-24 01:48:22
【问题描述】:

我正在编写一个带有 while 循环的程序,它将大量数据写入 csv 文件。可能有超过 100 万行。

考虑运行时间、内存使用、调试等,两者之间有什么更好的选择:

  1. 打开一个CSV文件,保持打开状态,逐行写入,直到100万都写完

  2. 打开一个文件,写100行左右,close(),再次打开,写100行左右,......

我想我只是想知道如果我们要一直保持文件打开会需要更多的记忆吗?哪一个需要更长的时间?

我无法运行代码进行比较,因为我使用 VPN 来获取代码,并且通过测试进行测试对我来说会花费太多美元。因此,对于这件事,只需一些经验法则就足够了。

【问题讨论】:

    标签: python csv


    【解决方案1】:

    我相信写入操作会立即写入磁盘,因此关闭和重新打开文件没有任何好处。该文件在打开时不会存储在内存中,您实际上只是获得一个指向该文件的指针,然后一次加载或写入其中的一部分。

    编辑

    更明确地说,不,打开大文件不会占用大量内存。同样,写入大量数据不会占用大量内存,只要数据写入文件后不将其保存在内存中即可。

    【讨论】:

    • 感谢您的回答。这是否意味着打开一个非常大的文件不会占用大量内存?
    • @BigBowl:打开文件并不意味着将整个内容读入内存。重要的是,在 POSIX 和相关操作系统中,有一种 文件描述符 机制,它使您能够以类似于 I/O 流的方式读取或写入文件中的数据。
    • @BigBowl 尝试查看这个以读取大文件:stackoverflow.com/questions/519633/…
    • ktalik 是正确的,只是打开文件不会将其加载到内存中。然后,当您对该文件执行读取操作时,即文件的一部分进入内存的那一刻
    • 我明白了。谢谢你们,阅读大文件的链接非常有用。欣赏!
    猜你喜欢
    • 2016-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多