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

Python套接字缓冲

Python套接字缓冲

recv()通过调用C库函数直接处理该调用

它将阻止套接字等待数据。实际上,它只会让recv()系统调用阻塞。

file.readline()是有效的缓冲实现。它不是线程安全的,因为它假定它是唯一读取文件文件。(例如,通过缓冲即将到来的输入。)

如果使用文件对象,则每次read()使用正参数调用时,底层代码recv()仅会请求所请求的数据量,除非已对其进行了缓冲。

如果满足以下条件,它将被缓冲:

您已经调用readline()来读取完整的缓冲区

行的结尾在缓冲区的结尾之前

因此将数据保留在缓冲区中。否则,缓冲区通常不会溢出。

问题的目的尚不清楚。如果需要在读取之前查看数据是否可用,可以通过select()或将套接字设置为非阻塞模式s.setblocking(False)。然后,如果没有等待的数据,读取将返回空,而不是阻塞。

您正在读取一个具有多个线程的文件套接字吗?我将让一个工人来读取套接字并将接收到的项目馈送到队列中,以供其他线程处理。

建议参考进行系统调用的Python Socket Module源代码C源代码

python 2022/1/1 18:27:45 有184人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

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

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

请先登录

推荐问题


联系我
置顶