использование bytearray с socket.recv_into
Я делаю некоторые сокеты ввода-вывода и использую объект bytearray в качестве буфера. Я хотел бы получать данные со смещением в этот буфер, используя csock.recv_into, как показано ниже, чтобы избежать создания промежуточных строковых объектов. К сожалению, кажется, что bytearrays можеттаким образом, и приведенный ниже код нет работа.
buf = bytearray(b" " * toread)
read = 0
while(toread):
nbytes = csock.recv_into(buf[read:],toread)
toread -= nbytes
read += nbytes
Поэтому вместо этого я использую код ниже, которыйделает использовать временную строку (и работает) ...
buf = bytearray(b" " * toread)
read = 0
while(toread):
tmp = csock.recv(toread)
nbytes = len(tmp)
buf[read:] = tmp
toread -= nbytes
read += nbytes
Есть ли более элегантный способ сделать это, который нене требует копирования промежуточных строк вокруг?