➖➖
Я взяла тестовый файлик с 1 млн строк и протестила все функции на нем по типу такого:
import sys
with open('1000000 Sales Records.csv') as f:
f_list = f.readlines()
print(type(f_list))
print(len(f_list))
print(sys.getsizeof(f_list)) # in bytes
🔶Результаты🔶
🟣read()
<class 'str'>
123 793 263 - длина строки
123 793 312 - размер в байтах
🟣readlines()
<class 'list'>
1 000 001 - количество строк (+заголовок)
8 448 728 - размер в байтах
🟣файловый итератор
<class '_io.TextIOWrapper'>
208 - размер в байтах
➡️ Получилось, что на выборке в 1 млн строк c длиной ~ 200 символов выигрыш по памяти между списком и итератором составил в 40k раз
➖➖
Если мы попробуем сделать такую же штуку с list(range(1000000)) vs range(1000000), то получим нечто похожее:
🟣list(range(1000000))
<class 'list'>
1 000 000 - количество чисел
8 000 056 - размер в байтах
🟣range(1000000)
<class 'range'>
1000000 - количество чисел
48 - размер в байтах
➡️ Тут с чиселками выигрыш в 166k раз
Вот и думайте
#python_tips