gpt4 book ai didi

python - 理解python关闭方法

转载 作者:行者123 更新时间:2023-12-04 21:55:31 26 4
gpt4 key购买 nike

是否正确理解以下两个功能完全相同?不管它们是如何调用的。

def test():
file = open("testfile.txt", "w")
file.write("Hello World")

def test_2():
with open("testfile.txt", "w") as f:
f.write("Hello World")

由于python在不再引用对象时调用close方法。

如果不是,那么这句话让我感到困惑:

Python automatically closes a file when the reference object of a file is reassigned to another file. It is a good practice to use the close() method to close a file.



来自 https://www.tutorialspoint.com/python/file_close.htm

最佳答案

不,close在第一种情况下,python 垃圾收集器(终结器)机器会调用方法,在第二种情况下会立即调用。如果你循环调用你的 testtest_2函数数千次,观察到的行为可能会有所不同。

File descriptors是(至少在 Linux 上)一种宝贵且稀缺的资源(当它耗尽时,open(2) 系统调用失败)。在 Linux 上使用 getrlimit(2)RLIMIT_NOFILE查询 process 的文件描述符数量限制.您应该更喜欢 close(2)一旦文件句柄无用,系统调用将被快速调用。

您的问题是特定于实现的、特定于操作系统的和特定于计算机的。您可能想通过阅读 Operating Systems: Three Easy Pieces 来了解有关操作系统的更多信息。 .

在 Linux 上,也试试 cat /proc/$$/limitscat /proc/self/limits终端中的命令。你会看到一条以 Max open files 开头的行(在我的 Debian 台式计算机上,现在是 2019 年 12 月,软限制是 1024)。见 proc(5) .

关于python - 理解python关闭方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59319832/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com