gpt4 book ai didi

python - 在 python 中关闭套接字

转载 作者:太空狗 更新时间:2023-10-30 01:49:47 26 4
gpt4 key购买 nike

我正在修改具有这种形式的 Python 代码:

def foo(self):
try:
connect socket
except Exception, e:
some error reporting stuff
return an error

use the socket
do some other stuff

if some condition:
return

do some more stuff
socket.close()
return normally

来自 Java 我想试一试 - 最后围绕整个事情来确保套接字已关闭。这段代码是否也应该有它,或者它是否在后台发生了某种 Pythonic 魔法,使您不必这样做?

我在 python 文档中读到套接字在垃圾回收时关闭。但是依靠垃圾收集器来关闭套接字感觉不太好。

最佳答案

您可以使用 try-finally block ,它是在 Python 2.5 中添加的:

try:
open socket
do stuff with socket
finally:
close socket

或者您可以使用 with 语句,它是在 Python 2.6 中添加的(并且可以在 2.5 中与 from __future__ import with_statement 声明一起使用):

with open_the_socket() as s:
use s

这将在退出内部 block 时自动关闭套接字,无论它是正常退出还是通过异常退出,前提是套接字类在其 __exit__() 方法中关闭。

自 Python 2.7.2 起,__exit__() 方法未在套接字类上实现。

关于python - 在 python 中关闭套接字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1517418/

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