더북(TheBook)

여러 파이썬 라이브러리 메서드( socket.recv_intoRawIOBase.readinto)가 버퍼 프로토콜을 사용해 데이터를 빠르게 받아들이거나 읽을 수 있다. 이런 메서드를 사용하면 새로 메모리를 할당하고 데이터를 복사할 필요가 없어진다. 다음 코드는 스플라이스를 하지 않고 socket.recv_intomemoryview 슬라이스를 사용해서 하부의 bytearray에 데이터를 수신한다.

video_array = bytearray(video_cache)
write_view = memoryview(video_array)
chunk = write_view[byte_offset:byte_offset + size]
socket.recv_into(chunk)