Python Object Dữ liệu Kích cỡ
Nếu dữ liệu được lưu trữ trong một số đối tượng python, sẽ có nhiều hơn một chút dữ liệu gắn liền với các dữ liệu thực tế trong bộ nhớ.
Điều này có thể dễ dàng được kiểm tra.
Thật thú vị khi lưu ý như thế nào, lúc đầu, các chi phí của đối tượng python rất có ý nghĩa đối với dữ liệu nhỏ, nhưng nhanh chóng trở nên không đáng kể.
Đây là mã ipython sử dụng để tạo ra các âm mưu
%matplotlib inline
import random
import sys
import array
import matplotlib.pyplot as plt
max_doubles = 10000
raw_size = []
array_size = []
string_size = []
list_size = []
set_size = []
tuple_size = []
size_range = range(max_doubles)
# test double size
for n in size_range:
double_array = array.array('d', [random.random() for _ in xrange(n)])
double_string = double_array.tostring()
double_list = double_array.tolist()
double_set = set(double_list)
double_tuple = tuple(double_list)
raw_size.append(double_array.buffer_info()[1] * double_array.itemsize)
array_size.append(sys.getsizeof(double_array))
string_size.append(sys.getsizeof(double_string))
list_size.append(sys.getsizeof(double_list))
set_size.append(sys.getsizeof(double_set))
tuple_size.append(sys.getsizeof(double_tuple))
# display
plt.figure(figsize=(10,8))
plt.title('The size of data in various forms', fontsize=20)
plt.xlabel('Data Size (double, 8 bytes)', fontsize=15)
plt.ylabel('Memory Size (bytes)', fontsize=15)
plt.loglog(
size_range, raw_size,
size_range, array_size,
size_range, string_size,
size_range, list_size,
size_range, set_size,
size_range, tuple_size
)
plt.legend(['Raw (Disk)', 'Array', 'String', 'List', 'Set', 'Tuple'], fontsize=15, loc='best')
RAM khác! Có danh sách trên không, trong số những thứ khác. Nếu bạn lo lắng, a) tìm hiểu và b) xem xét việc lưu trữ dữ liệu thô trong bộ nhớ và giải nén dữ liệu đó một cách nhanh chóng (nó phụ thuộc vào những gì bạn đang làm với nó). – Ryan
Liên quan: http: // stackoverflow.com/a/994010/846892 –
Suy nghĩ đầu tiên của tôi là mất một lúc để người dùng đợi cho đến khi tất cả dữ liệu đó được tải vào RAM. –