它将阻止套接字等待数据。实际上,它只会让recv()
系统调用阻塞。
file.readline()
是有效的缓冲实现。它不是线程安全的,因为它假定它是唯一读取文件的文件。(例如,通过缓冲即将到来的输入。)
如果使用文件对象,则每次read()
使用正参数调用时,底层代码recv()
仅会请求所请求的数据量,除非已对其进行了缓冲。
如果满足以下条件,它将被缓冲:
您已经调用readline()来读取完整的缓冲区
行的结尾在缓冲区的结尾之前
因此将数据保留在缓冲区中。否则,缓冲区通常不会溢出。
问题的目的尚不清楚。如果需要在读取之前查看数据是否可用,可以通过select()
或将套接字设置为非阻塞模式s.setblocking(False)
。然后,如果没有等待的数据,读取将返回空,而不是阻塞。