Python sockets Pufferung

Sagen wir, ich will eine Zeile Lesen von einem socket, unter Verwendung der standard - socket Modul:

def read_line(s):
    ret = ''

    while True:
        c = s.recv(1)

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

    return ret

Was genau passiert in s.recv(1)? Wird es Problem ein system rufen jedes mal? Ich glaube, ich sollte hinzufügen, dass einige der Pufferung sowieso:

Für die beste übereinstimmung mit hardware-und Netzwerk-Realitäten, die Wert bufsize sollten eine relativ kleine Potenz von 2, Z. B. 4096.

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

Aber es scheint nicht einfach zu schreiben effiziente und thread-sicheren Puffern. Was, wenn ich file.readline()?

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

InformationsquelleAutor der Frage Bastien Léonard | 2009-05-04

Schreibe einen Kommentar