2011-01-30 13 views
26

Mô tả đầy memoryview thể được tìm thấy here:Khi nào nên sử dụng chế độ xem bộ nhớ?

Tạo một memoryview tham chiếu obj. obj phải hỗ trợ giao thức đệm. Các đối tượng tích hợp hỗ trợ giao thức đệm bao gồm bytesbytearray.

Một memoryview có khái niệm về một yếu tố, là đơn vị bộ nhớ nguyên tử xử lý bởi các đối tượng có nguồn gốc obj. Đối với nhiều loại đơn giản như bytesbytearray, phần tử là một byte, nhưng các loại khác như array.array có thể có các phần tử lớn hơn.

+0

Tôi đã yêu cầu tương tự từ google, chỉ tìm thấy [cái gì đó có liên quan] (http://eli.thegreenplace.net/2011/11/28/less-copies-in-python-with-the-buffer-protocol- và-memoryviews) – dcsordas

Trả lời

19

Chế độ xem bộ nhớ về cơ bản là cấu trúc mảng NumPy được tổng quát hóa trong chính Python (không có phép toán). Nó cho phép bạn chia sẻ bộ nhớ giữa các cấu trúc dữ liệu (những thứ như hình ảnh PIL, cơ sở dữ liệu SQLlite, mảng NumPy, v.v.) mà không cần sao chép lần đầu. Điều này rất quan trọng đối với các tập dữ liệu lớn.

Với nó, bạn có thể làm những việc như bộ nhớ ánh xạ tới một tệp rất lớn, cắt một phần của tệp đó và thực hiện các phép tính trên mảnh đó (dễ nhất nếu bạn đang sử dụng NumPy).

2

Từ các tài liệu, tôi hình dung nó được sử dụng để "truy cập vào dữ liệu nội bộ của một đối tượng có hỗ trợ giao thức đệm mà không cần sao chép", vì vậy bạn có thể làm việc với khối lượng lớn các dữ liệu mà không làm đầy bộ nhớ của bạn. Tôi không biết nếu bạn muốn ví dụ, nhưng tôi không thể nghĩ ra bất kỳ, không may.

+6

Cảm ơn, nhưng tôi cũng đọc nó trong tài liệu, điều này không có nhiều thông tin. –