utilizando bytearray con socket.recv_into
Estoy haciendo algo de socket IO, y usando un objeto bytearray como un búfer. Me gustaría recibir datos con un desplazamiento en este búfer utilizando csock.recv_into como se muestra a continuación para evitar la creación de objetos de cadena intermedios. Desafortunadamente, parece que los bytearrays no se pueden usar de esta manera, y el siguiente código no funciona.
buf = bytearray(b" " * toread)
read = 0
while(toread):
nbytes = csock.recv_into(buf[read:],toread)
toread -= nbytes
read += nbytes
Así que en lugar de eso estoy usando el siguiente código, el cualhace usar una cadena temporal (y funciona) ...
buf = bytearray(b" " * toread)
read = 0
while(toread):
tmp = csock.recv(toread)
nbytes = len(tmp)
buf[read:] = tmp
toread -= nbytes
read += nbytes
¿Hay una forma más elegante de hacerlo que no requiera copiar cadenas intermedias?