[Python] memoryview() 함수 사용방법 및 예제

Asked 6 months ago, Updated 6 months ago, 134 views

memoryview(obj)

memoryview() 함수는 지정된 인수의 메모리 뷰 객체를 반환합니다.
메모리 뷰가 무엇인지 살펴보기 전에 먼저 파이썬의 버퍼 프로토콜에 대해 이해해야 합니다.

 

파이썬의 버퍼 프로토콜

버퍼 프로토콜은 객체의 내부 데이터에 접근하는 방법을 제공합니다.
이 내부 데이터는 메모리 배열 또는 버퍼입니다.
버퍼 프로토콜은 한 객체가 내부 데이터(버퍼)를 노출시키고 다른 개체는 중간 복사 없이 버퍼에 액세스할 수 있게 합니다.
이 프로토콜은 C-API 레벨에서만 액세스할 수 있으며 일반 코드베이스를 사용하지 않습니다.
따라서 동일한 프로토콜을 일반 파이썬 코드베이스에 노출하기 위해 메모리 뷰가 존재합니다.

 

메모리 뷰란?

메모리 뷰는 파이썬에서 버퍼 프로토콜을 노출시키는 안전한 방법입니다.
메모리 뷰 객체를 만들어 객체의 내부 버퍼에 액세스할 수 있습니다.

 

버퍼 프로토콜과 메모리 뷰가 중요한 이유

우리가 객체에 대해 어떤 작업을 수행할 때마다(객체의 함수 호출, 배열 슬라이스), Python은 객체의 복사본을 생성해야 합니다.
사용할 대용량 데이터(예: 이미지의 바이너리 데이터)가 있는 경우, 불필요하게 거대한 데이터의 복사본을 만들 수 있으며, 이는 거의 쓸모가 없습니다.
버퍼 프로토콜을 사용하면 큰 데이터를 복사하지 않고 사용/수정할 수 있는 다른 객체 액세스를 제공할 수 있습니다.
것은 프로그램의 메모리 사용을 줄이고 실행 속도를 증가시킵니다.

 

매개변수

  • obj - 내부 데이터가 노출될 객체입니다.
    obj는 버퍼 프로토콜(bytes, bytearray)을 지원해야 합니다.

 

리턴값

메모리 뷰 객체를 반환합니다.

 

예제

#random bytearray
random_byte_array = bytearray('ABC', 'utf-8')

mv = memoryview(random_byte_array)

# access memory view's zeroth index
print(mv[0])

# create byte from memory view
print(bytes(mv[0:2]))

# create list from memory view
print(list(mv[0:3]))

결과

65
b'AB'
[65, 66, 67]

python 강좌 memoryview

2022-05-17 17:53

0 Answers

If you have any answers or tips


© 2022 pinfo. All rights reserved.