Tampons Python

Disons que je veux lire une ligne à partir d'une prise, à l'aide de la norme socket module:

def read_line(s):
    ret = ''

    while True:
        c = s.recv(1)

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

    return ret

Exactement ce qui se passe dans s.recv(1)? Il sera question d'un système d'appel à chaque fois? Je suppose que je devrais ajouter un peu de mise en mémoire tampon, de toute façon:

Pour une meilleure correspondance avec le matériel et le réseau des réalités, la valeur de bufsize doit être relativement petite puissance de 2, par exemple, 4096.

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

Mais il ne semble pas facile à écrire efficace et thread-safe de mise en mémoire tampon. Que faire si j'utilise file.readline()?

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

source d'informationauteur Bastien Léonard | 2009-05-04