Спасибо Алексею за полное и лаконичное пояснение
, а я добавлю еще пояснялку с замерами по памяти
Я взяла тестовый файлик с 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_li
st)) #
bytes
езу
таты
read()
<class 'str'>
123 793 263 - длина строки
123 7
312 - размер в байтах
readlines()
<class 'list'>
1 000 001 - количество строк
заголовок)
8 448 728 - размер в байтах
файловый итератор
<class
#x27;_io.TextIOWrapper'>
208 - размер в байтах
?? Получилось, что на выборке в 1 млн строк c длиной ~ 200 символов выигрыш
о памяти между списком и итератором составил в 40k раз
??
Если мы попробуем сделать такую же штуку с list(rang
1000000)) vs range(1000000), то получим нечто похожее:
list(range(1000000))
<class '
ist'>
1 000 000 - количество чисел
8 000 056 - размер в байтах
range(
00000)
<class 'range'>
1000000 - количество чисел
48 - размер в байтах
?? Тут с чиселками выигрыш в 166k раз
Вот и думайте
#python_tips
Обсуждение 5
Обсуждение не доступно в веб-версии. Чтобы написать комментарий, перейдите в приложение Telegram.
Обсудить в Telegram