Буферизация сокетов Python

Допустим, я хочу прочитать строку из сокета, используя стандартsocket модуль:

def read_line(s):
    ret = ''

    while True:
        c = s.recv(1)

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

    return ret

Что именно происходит вs.recv(1)? Будет ли он выдавать системный вызов каждый раз? Я думаю, что я должен добавить буферизацию, так или иначе:

Для лучшего соответствия аппаратным и сетевым реалиям, значениеBUFSIZE должно быть относительно небольшой степенью 2, например, 4096.

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

Но писать эффективную и поточно-ориентированную буферизацию нелегко. Что делать, если я используюfile.readline()?

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

Ответы на вопрос(3)

Ваш ответ на вопрос