您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

如何在Python中使用套接字作为上下文管理器?

如何在Python中使用套接字作为上下文管理器?

socket模块相当底层,使您几乎可以直接访问C库功能

您始终可以使用contextlib.contextmanager装饰器来构建自己的装饰器

import socket
from contextlib import contextmanager

@contextmanager
def socketcontext(*args, **kw):
    s = socket.socket(*args, **kw)
    try:
        yield s
    finally:
        s.close()

with socketcontext(socket.AF_INET, socket.soCK_DGRAM) as s:

或用于contextlib.closing()达到相同效果

from contextlib import closing

with closing(socket.socket(socket.AF_INET, socket.soCK_DGRAM)) as s:

但是contextmanager()装饰器使您有机会首先使用套接字执行其他操作。

Python 3.x确实可以socket()创建上下文管理器,但是直到2016年Python 3.5周期才进行更新,文档并未得到反映。请参阅源代码中的socket,其中添加__enter____exit__方法

python 2022/1/1 18:43:08 有506人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶