programing

파이썬 '버퍼' 유형은 무엇을 위한 것입니까?

css3 2023. 7. 19. 21:32

파이썬 '버퍼' 유형은 무엇을 위한 것입니까?

있습니다.buffer파이썬으로 입력합니다만, 어떻게 사용할 수 있습니까?

에 대한 Python 설명서의 설명은 다음과 같습니다.

buffer(object[, offset[, size]])

object 인수는 버퍼 호출 인터페이스(예: 문자열, 배열 및 버퍼)를 지원하는 개체여야 합니다.개체 인수를 참조하는 새 버퍼 개체가 만들어집니다.버퍼 개체는 개체의 시작 부분(또는 지정된 간격띄우기 부분)의 조각이 됩니다.슬라이스가 개체의 끝까지 확장됩니다(또는 size 인수로 지정된 길이).

사용 예:

>>> s = 'Hello world'
>>> t = buffer(s, 6, 5)
>>> t
<read-only buffer for 0x10064a4b0, size 5, offset 6 at 0x100634ab0>
>>> print t
world

이 경우 버퍼는 위치 6에서 길이 5로 시작하는 하위 문자열이며 추가 저장 공간이 필요하지 않습니다. 이는 문자열의 조각을 참조합니다.

이는 이러한 짧은 문자열에는 그다지 유용하지 않지만 대량의 데이터를 사용할 때 필요할 수 있습니다.이 예에서는 변수를 사용합니다.bytearray:

>>> s = bytearray(1000000)   # a million zeroed bytes
>>> t = buffer(s, 1)         # slice cuts off the first byte
>>> s[1] = 5                 # set the second element in s
>>> t[0]                     # which is now also the first element in t!
'\x05'

이 기능은 데이터에 둘 이상의 보기를 사용하고 메모리에 여러 개의 복사본을 저장하거나 저장할 수 없는 경우에 매우 유용합니다.

Python 2.7에서 사용할 수 있지만 Python 3에서 더 나은 이름으로 대체되었습니다.

또한 C API에 파고들지 않고는 자신의 객체에 대한 버퍼 인터페이스를 구현할 수 없습니다. 즉, 순수 파이썬에서는 구현할 수 없습니다.

버퍼는 예를 들어 파이썬을 네이티브 라이브러리에 인터페이스할 때 유용하다고 생각합니다(Guido van Rossum은 설명합니다).buffer이 메일링 리스트 게시물에서).

예를 들어, NumPy는 효율적인 데이터 저장을 위해 버퍼를 사용하는 것으로 보입니다.

import numpy
a = numpy.ndarray(1000000)

a.datais a:

<read-write buffer for 0x1d7b410, size 8000000, offset 0 at 0x1e353b0>

언급URL : https://stackoverflow.com/questions/3422685/what-is-the-python-buffer-type-for