Python Objektdaten Größe
Wenn die Daten in irgendeine Python-Objekt gespeichert wird, wird es ein wenig mehr Daten zu den tatsächlichen Daten im Speicher angebracht sein.
Dies kann leicht getestet werden.
Es ist interessant zu sehen, wie auf den ersten, die Overhead des Python-Objekt für kleine Daten signifikant ist, wird aber schnell vernachlässigbar.
Hier ist der verwendete ipython Code ist die Handlung
%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')
Mehr RAM! Unter anderem gibt es Listen Overhead. Wenn Sie sich Sorgen machen, a) finden Sie heraus, und b) erwägen Sie einfach, die rohen Daten im Speicher zu speichern und sie sofort zu entpacken (es kommt darauf an, was Sie damit machen). – Ryan
Verwandt: http: // stackoverflow.com/a/994010/846892 –
Mein erster Gedanke ist, dass der Benutzer eine Weile warten würde, bis alle Daten in den RAM geladen wurden. –