avatar
дата инженеретта
@data_engineerette
20.01.2025 08:52
Спасибо Алексею за полное и лаконичное пояснение , а я добавлю еще пояснялку с замерами по памяти



Я взяла тестовый файлик с 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(rang1000000)) vs range(1000000), то получим нечто похожее:

list(range(1000000))
<class 'ist'>
1 000 000 - количество чисел
8 000 056 - размер в байтах

range(00000)
<class 'range'>
1000000 - количество чисел
48 - размер в байтах

?? Тут с чиселками выигрыш в 166k раз

Вот и думайте

#python_tips
? 21
8
? 3
5 18 3.2K

Обсуждение 5

Обсуждение не доступно в веб-версии. Чтобы написать комментарий, перейдите в приложение Telegram.

Обсудить в Telegram

дата инженеретта

3.4K
мелкое — крупно,
в глубоком разговоре
мудрость приходит

по вопросам сюда: @aigul_sea
Открыть в Telegram