Python sockets buffering

Digamos que quiero leer una línea desde un socket, usando el estándarsocket módulo:

def read_line(s):
    ret = ''

    while True:
        c = s.recv(1)

        if c == '\n' or c == '':
            break
        else:
            ret += c

    return ret

Qué sucede exactamente ens.recv(1)? ¿Emitirá una llamada al sistema cada vez? Supongo que debería agregar algo de búfer, de todos modos:

Para la mejor combinación con las realidades de hardware y red, el valor de bufsize debería ser una potencia relativamente pequeña de 2, por ejemplo, 4096.

http: //docs.python.org/library/socket.html#socket.socket.rec

Pero no parece fácil escribir un búfer eficiente y seguro para subprocesos. ¿Qué pasa si usofile.readline()?

# does this work well, is it efficiently buffered?
s.makefile().readline()

Respuestas a la pregunta(3)

Su respuesta a la pregunta