использование 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

Есть ли более элегантный способ сделать это, который нене требует копирования промежуточных строк вокруг?

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

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