Hàm memoryview() trong Python

0

Trước khi hiểu chế độ xem bộ nhớ là gì, chúng ta cần nói một chút về bộ đệm giao thức của Python.

Giao thức bộ đệm của Python là gì?

Giao thức đệm cung cấp một cách để truy cập dữ liệu nội bộ của một đối tượng. Dữ liệu nội bộ này có thể là một mảng bộ nhớ hoặc bộ đệm.

Giao thức bộ đệm cho phép một đối tượng để lộ dữ liệu (bộ đệm) bên trong nó và một đối tượng khác có thể truy cập vào các bộ đệm đó mà không cần sao chép trung gian.

Giao thức này chỉ có thể truy cập dữ liệu ở cấp độ C-API và không sử dụng cơ sở mã thông thường. Do đó, để hiển thị dữ liệu trong cùng giao thức với cơ sở mã Python thông thường, chúng ta cần có chế độ xem bộ nhớ.

☑️ Xem thêm:  Hướng dẫn cách chụp hình trên Apple Watch

Xem bộ nhớ là gì?

Xem bộ nhớ là một cách an toàn để hiển thị các giao thức bộ đệm trong Python. Nó cho phép bạn truy cập bộ đệm bên trong một đối tượng bằng cách tạo một đối tượng xem bộ nhớ.

Tại sao giao thức bộ đệm và chế độ xem bộ nhớ rất quan trọng trong Python?

Bất cứ khi nào chúng ta thực hiện các hành động trên một đối tượng (thực thi một chức năng trên một đối tượng, cắt một mảng …), Python sẽ tạo một bản sao của đối tượng. Điều này sẽ tiêu tốn bộ nhớ, làm chậm quá trình xử lý nếu chúng ta làm việc với lượng dữ liệu lớn.

memoryview () là một chức năng khá quan trọng của Python

Bằng cách sử dụng giao thức đệm, chúng tôi có thể cho phép một đối tượng truy cập sử dụng / sửa đổi dữ liệu mà không phải sao chép thêm một bản sao. Điều này sẽ giúp chương trình sử dụng ít bộ nhớ hơn và tăng tốc độ xử lý mã.

☑️ Xem thêm:  Đánh giá chi tiết Realme 5 Pro (REALME Q) giá rẻ nhưng cấu hình đầy mạnh mẽ với Snapdragon 712

Xem thêm: Hàm property () trong Python

Cú pháp hàm memoryview ()

Để hiển thị bộ đệm giao thức bằng cách bộ nhớ (), chúng tôi sử dụng cú pháp:

memoryview(đối tượng)

Tham số hàm Memoryview ()

Hàm bộ nhớ () Chỉ có một tham số:

  • Đối tượng: Đối tượng chứa dữ liệu bạn muốn sử dụng bộ nhớ () để truy cập. Đối tượng này phải hỗ trợ bộ đệm giao thức (byte, bytearray).

Giá trị được trả về từ hàm memoryview ()

Hàm bộ nhớ () Trả về khung nhìn bộ nhớ của đối tượng.

Ví dụ 1: Hàm memoryview () hoạt động như thế nào trong Python?

#random bytearray
 random_byte_array = bytearray('SHARENHANH', 'utf-8')
 
 mv = memoryview(random_byte_array)
 
 # truy cập chỉ số ở vị trí số 0 của memory view
 print(mv[0])
 
 # tạo byte từ memory view
 print(bytes(mv[0:2]))
 
 # tạo danh sách memory view
 print(list(mv))

Khi chạy chương trình, kết quả trả về là:

Xem thêm: Hàm oct () trong Python là gì?

Ở đây, chúng tôi tạo ra một khung nhìn bộ nhớ mv từ mảng byte Random_byte_array.

Sau đó, chúng tôi truy cập vào chỉ mục ở vị trí 0 của mv, giá trị của chỉ số này là S. Chỉ số này được in theo giá trị ASCII là 83.

☑️ Xem thêm:  [Mới] Hướng dẫn tải về cài đặt và Crack Corel X7 vĩnh viễn chi tiết nhất

Tiếp theo, chúng tôi truy cập các chỉ mục vị trí 0 và 1 của mv, SH và chuyển đổi chúng thành byte. Cuối cùng, chúng tôi truy cập tất cả các chỉ số của mv và chuyển đổi chúng thành một danh sách ASCII.

Ví dụ 2: Chỉnh sửa dữ liệu với memoryview ()

# random bytearray
 random_byte_array = bytearray('SHARENHANH', 'utf-8')
 print('Trước khi sửa:', random_byte_array)
 
 mv = memoryview(random_byte_array)
 
 # cập nhật chỉ số vị trí số 1 của mv thành U
 mv[1] = 85
 print('Sau khi sửa:', random_byte_array)

Khi chạy chương trình, kết quả là:

Trước khi sửa: bytearray(b'SHARENHANH')
 Sau khi sửa: bytearray(b'SUARENHANH')

Ở đây, chúng tôi cập nhật chỉ số vị trí số 1 bằng mv từ H đến U, 85 là mã ASCII của U.

Do đối tượng xem bộ nhớ mv Tham chiếu bộ đệm / bộ nhớ tương tự sẽ cập nhật chỉ mục nội bộ mv Cũng cập nhật Random_byte_array.

Leave A Reply

Your email address will not be published.