【问题标题】:What resources are taken up by Python's file IO operations?Python 的文件 IO 操作占用了哪些资源?
【发布时间】:2016-03-04 05:35:37
【问题描述】:

Python 的文档说

当你完成一个文件时,调用 f.close() 来关闭它并释放所有被打开的文件占用的系统资源。调用 f.close() 后,尝试使用文件对象将自动失败。

Python 文件 IO 是如何工作的,为什么要关闭文件? Python的文件IO操作占用了哪些资源?

【问题讨论】:

  • 内存指针已打开。您需要关闭它们以防止内存泄漏。
  • 什么是内存指针?
  • 对内存中某个位置的引用 - A pointer

标签: python


【解决方案1】:

一般来说,您的操作系统对可以为特定进程打开的文件句柄的数量有限制。这不是特定于 python,而是特定于在该系统上运行的任何编程语言。

例如,在 *nix 系统上,ulimit -n 会告诉您可以打开的文件句柄数。

关闭文件句柄可确保您不会因为操作系统拒绝让您打开另一个文件而出错。 :-)。

【讨论】:

    【解决方案2】:

    也许这个类比会有所帮助。

    文件就是一本书。

    您打开一本书——在编程中,这将创建some reference variable in memory 以指向读/写模式下的“首页”,或附加模式下的“最后一页”。

    当“书”打开时,您可以“阅读”它并“翻页”——在 Python 中,这是由open 然后readreadlinesseek 等完成的.

    “书”保持打开状态,然后在打开的位置占用一些空间。 -- 在编程中,这是通用的操作系统内存。把它想象成你办公桌上的空间。

    当你“合上书”时,它占用的空间就会被释放。想想这就像把书从你的桌子上拿下来,放回书架上,不碍事。

    无法再次关闭,因为它已经关闭。

    不关闭“书”并打开更多“书”会导致空间不足,因为您只能在桌子上放置这么多书——在编程中,这相当于resource leak

    【讨论】:

    • 哇,这个类比真的很有帮助,谢谢!什么/在哪里可以阅读更多关于打开文件如何占用一般操作系统内存的信息?打开的文件使用哪一部分内存?
    • 嗯,一个文件有 X 字节大,所以这就是硬盘空间。除此之外,stack and heap 内存值得了解。
    • @cricket_007 -- 虽然您说文件确实占用了内存资源是正确的,但通常这些资源是微不足道的。在内存占用以任何您可以真正衡量的方式影响您之前,您将用完可用的文件句柄。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-03
    • 1970-01-01
    相关资源
    最近更新 更多