메모리뷰가 뭔지 몰라서 계속 검색해보다가 꽤나 지식을 확장한 느낌으 들었다.
우선 메모리뷰의 역할은 파이썬에서 바이트(byte) 데이터에 대한 접근을 제공하는 객체이다.
memoryview
객체는 다른 바이트 형식의 객체, 예를 들어 bytes, bytearray, 직접 작성된 바이트와 같은 객체에 대한 뷰를 제공한다. memoryview
객체를 사용하면, 객체 내에서의 바이트를 직접 접근하고 수정할 수 있으며, 이를 통해 효율적인 바이트 관리와 처리를 가능하게 만든다.
바이트 객체는 말 그대로 데이터 형식이 바이트 단위로 구성된 객체를 의미한다.
예시로 보여준다면 이렇게 바이트 객체를 생성할 수 있다.
b = bytes([0x41, 0x42, 0x43])
바이트 객체를 사용하면 이점은 아래와 같다.
memoryview
객체를 사용하여 바이트 데이터를 가져와 특정 위치에서의 데이터를 추출하거나 데이터를 수정할 수 있다. memoryview
객체를 사용하면, 바이트 객체와 같은 메모리 위치에서의 데이터를 직접 접근할 수 있으므로, 연산 속도가 높아지고 메모리 사용량이 줄어드는 효과를 볼 수 있다.
여기서 메모리는 여러번 중복해서 참조가 가능하다.
memoryview
객체를 사용하면 동일한 바이트 배열의 복사본을 만들 필요 없이 바이트 데이터를 공유할 수 있다memoryview
객체는 파이썬의 내장 메모리 관리 기술을 이용해 바이트 데이터를 효율적으로 처리할 수 있다. 메모리 뷰를 사용하면 데이터를 복사할 필요 없이, 데이터에 직접 접근할 수 있어 처리 속도가 향상된다.memoryview
객체를 사용하면 바이트 데이터에 대한 여러 종류의 작업을 수행할 수 있다. 예를 들어, 바이트 데이터의 특정 부분을 슬라이싱하거나, 바이트 데이터의 특정 위치에서 특정 타입의 값을 읽을 수 있다.오늘 파이썬에서 memoryview에 대해서 잠깐 공부했다.
메모리뷰의 역할은 파이썬에서 바이트(byte) 데이터에 대한 접근을 제공하는 객체이다. memoryview 객체를 사용하면, 객체 내에서의 바이트를 직접 접근하고 수정할 수 있으며, 이를 통해 효율적인 바이트 관리와 처리를 도와준다고 공부했다. 그럼 저는 여기서 질문이 생겼다. 데이터를 왜 바이트 형식으로 저장하는지 궁금증이 생겼다. 그 해답은 구글링을 통해서 궁금증이 풀렸다.
바이트 형식으로 저장 시 표준화, 효율성, 간결성의 이점이 있다고 이해했다.
하지만 나에게 다시 궁금증이 생겼다. 바이트 형식의 데이터를 어디서 이용하는지 궁금해졌다.
일반적으로 CPU가 Word라는 단위를 기준으로 연산을 처리합니다. 보통 4바이트 또는 8바이트 이구요. 아마 수업시간에 들어봤을 거에요.
그래서 바이트 형식은 컴퓨터가 데이터를 사용하는 방식과 같습니다. 그래서 사실 모든 저장된 데이터는 모두 바이트 형식으로 저장되어 있습니다. 해당 데이터도 어쨋든 컴퓨터가 사용하는 단위로 저장되어야 하니까요. 다만, 우리가 사람이 읽기 편한 문자를 바이트로 표현한거라서, 예를들어 어떤 데이터를 txt로 저장하고, 그 글자를 표현한 바이트를 사람이 보기 편하게 해주는 프로그램을 통해서 우리가 읽을 수 있겠죠. 예를들어, 'A'라는 문자의 ASCII 코드가 있을 것이고, 그것의 Byte 표기가 있을 거에요. 'A'라는 문자 하나를 메모장열고 저장시킨 후, 바이트 단위로 읽어서 출력한다면 해당 컴퓨터가 'A'를 어떻게 바이트로 표현하는지 알 수 있을것입니다.
여튼 바이트 형식의 데이터라고 부르는 것은 보통 이러한 사람이 읽기 쉬운 표현 방식을
쓰지 않은 것을 바이트 형식이라고 부릅니다. (또는 어떤 프로그램의 특수한 문제를 처리하기 위한 파일등의 경우)예를들어 제 프로그램상 어떤 한 클래스의 메모리 데이터가 선형상에 10~100까지의 주소사이에 있다고 가정했을 때, 거기에 있는 바이트값들을 그냥 파일에다가 쓸 수 있겠죠. 그리고 필요하다면 그 바이트값들을 그대로 읽어와 해당 클래스를 그대로 인스턴싱 할 수 있을 거에요.이 덕분에 효율성과 간결성이 있습니다.여기에 표준화가 생기려면 규칙성에 부여해야 하고 소위 말하는 Specification, Document 등을 통해 많은 사람들이 그 규칙성을 따라하도록 해야 생깁니다.바이트 형식과 반대되는 것은 JSON을 생각해볼 수 있을 거에요. (다만 위에서 설명했듯이 JSON도 당연히 컴퓨터에 저장되기 때문에 바이트 단위로 저장됩니다) Human Readable한 파일로 작성하게 합니다. 명세서가 있기에 표준화가 되어있구요. JSON은 파싱을 (구조를 파악하여 필요한 것들을 가져오는 것) 해야하기 때문에 아까 위에서 말한 어떤 클래스 메모리를 바로 파일에 써서 로드하는 것과는 하나의 절차가 추가가 되기 때문에, 효율성이나 간결성 면에서는 떨어지겠죠. 즉, 파싱 -> 데이터 구성 -> 클래스 구성 이렇게 절차가 구성되니까요.
그래서 어디서 사용하는지에 답변은 이러한 human readable한 파일이 필요없고, 빠르게 파일을 불러와서 처리하고 싶은 곳 어디에서나 사용가능합니다.
열심히 하는 모습이 멋져요!