
- Главная
- Каталог
- Интернет технологии
- Python Ready | Программирование
Python Ready | Программирование
Авторский канал по разработке на Python.
Статистика канала
faulthandler - встроенный модуль, который показывает стек при любом сегфолте или ошибке на уровне интерпретатора.
Используйте флаг прямо при запуске:
python -X faulthandler script.py{}
Теперь даже если код упадёт «в никуда», будет видно, где именно это произошло.
Можно включить прямо из кода:
import faulthandler
faulthandler.enable(){}
Или направить вывод в файл, чтобы не потерять логи:
faulthandler.dump_traceback_later(10, repeat=True){}
🔥 faulthandler показывает точный стек даже при бесконечной рекурсии или неожиданных падениях в потоках.
read(), а потом удивляются, почему на больших логах или выгрузках начинает расти память и всё работает тяжелее.
На маленьких файлах это обычно не проблема:
with open("data.txt", encoding="utf-8") as f:
data = f.read()
print(len(data))
{}
Если файл небольшой и нужен полностью — нормально. Но когда речь идёт о логах, дампах или просто крупных текстовых файлах, такой подход быстро перестаёт быть удобным. read() сразу тянет всё содержимое в память, и это не всегда оправдано.
В большинстве практических задач с текстовыми файлами удобнее читать их построчно:
with open("data.txt", encoding="utf-8") as f:
for line in f:
print(line.rstrip("\n"))
{}
Так проще контролировать память, и на больших объёмах это ведёт себя предсказуемее.
Например, если нужно просто отфильтровать строки:
with open("data.txt", encoding="utf-8") as f:
for line in f:
if "ERROR" in line:
print(line.rstrip("\n"))
{}
Или посчитать количество совпадений:
error_count = 0
with open("data.txt", encoding="utf-8") as f:
for line in f:
if "ERROR" in line:
error_count += 1
print(error_count)
{}
На больших файлах такие вещи уже имеют значение. Даже небольшая лишняя работа внутри цикла потом умножается на весь объём данных.
Если формат не очень подходит под построчное чтение или нужен более жёсткий контроль, удобнее читать чанками:
def read_chunks(file, size=1024 * 1024):
while True:
chunk = file.read(size)
if not chunk:
break
yield chunk
{}
Использование:
with open("data.txt", encoding="utf-8") as f:
for chunk in read_chunks(f):
print(len(chunk))
{}
Для бинарных файлов — то же самое, только в rb:
with open("data.bin", "rb") as f:
for chunk in read_chunks(f):
process(chunk)
{}
Также настраивают буферизацию:
with open("data.txt", encoding="utf-8", buffering=1024 * 1024) as f:
for line in f:
pass
{}
Иногда это даёт прирост, иногда почти ничего не меняет — зависит от среды, диска и нагрузки. Такие вещи лучше проверять замерами.
Ещё один вариант — mmap:
import mmap
with open("data.txt", "rb") as f:
with mmap.mmap(f.fileno(), 0, access=mmap.ACCESS_READ) as mm:
for line in iter(mm.readline, b""):
print(line.decode("utf-8").rstrip("\n"))
{}
В каких-то сценариях он удобен (например, для поиска или случайного доступа), в каких-то — не даёт выигрыша и только усложняет код.
И да, файл руками закрывать не нужно:
with open("data.txt", encoding="utf-8") as f:
...
{}
with сам всё корректно закроет.
read() — когда файл небольшой и нужен целиком, чтение по строкам — основной рабочий вариант для больших текстовых файлов, чанки — когда нужен контроль памяти или формат не построчный, mmap — точечный инструмент под конкретные задачи.
data.append(x)
if len(data) > 3: data.pop(0){}
deque с maxlen делает это автоматически, при добавлении нового элемента старый удаляется без лишнего кода:
deque(maxlen=3){}
Это работает за O(1) и без перераспределения памяти, в отличие от списка с pop(0):
d.append(x){}
Подходит для логов, метрик, ограничения частоты запросов, скользящего среднего, потоковой обработки и любых задач со скользящими данными:
list(d){}
deque(maxlen) — простой способ реализовать буфер фиксированного размера.
pip install pandas scikit-learn
{}
Ничего необычного — стандартный стек для работы с табличными данными.
Импорт модулей:
import pandas as pd
from sklearn.preprocessing import MinMaxScaler
{}
Соберём простой датасет:
data = pd.DataFrame({
"age": [20, 30, 40, 50],
"salary": [20000, 50000, 80000, 120000]
})
{}
Здесь специально взяты признаки с разным масштабом, чтобы было видно эффект.
Создаём scaler:
scaler = MinMaxScaler()
{}
На этом этапе он ещё ничего не знает о данных — просто объект с параметрами.
Применяем к обучающим данным:
scaled = scaler.fit_transform(data)
{}
Здесь происходит и обучение (запоминаются min/max), и трансформация. На выходе — обычный numpy-массив со значениями в диапазоне [0, 1].
Вернём обратно в DataFrame:
result = pd.DataFrame(scaled, columns=data.columns)
print(result)
{}
Так удобнее смотреть и дебажить. Минимумы станут 0, максимумы — 1, остальные значения распределятся между ними.
Применение к новым данным:
new_data = pd.DataFrame({
"age": [35],
"salary": [60000]
})
new_scaled = scaler.transform(new_data)
print(new_scaled)
{}
Важно, что используется тот же scaler, обученный на train-данных — это принципиально. Если новое значение выйдет за обучающий диапазон, результат может быть меньше 0 или больше 1, и это нормально.
Холдинг с платформенными решениями для entertainment. Масштабные проекты, гибкий формат работы, среда где экспертиза ценится и растёт
Отзывы канала
всего 2 отзыва
- Добавлен: Сначала новые
- Добавлен: Сначала старые
- Оценка: По убыванию
- Оценка: По возрастанию
Каталог Телеграм-каналов для нативных размещений
Python Ready | Программирование — это Telegam канал в категории «Интернет технологии», который предлагает эффективные форматы для размещения рекламных постов в Телеграмме. Количество подписчиков канала в 33.8K и качественный контент помогают брендам привлекать внимание аудитории и увеличивать охват. Рейтинг канала составляет 13.2, количество отзывов – 2, со средней оценкой 5.0.
Вы можете запустить рекламную кампанию через сервис Telega.in, выбрав удобный формат размещения. Платформа обеспечивает прозрачные условия сотрудничества и предоставляет детальную аналитику. Стоимость размещения составляет 6013.98 ₽, а за 20 выполненных заявок канал зарекомендовал себя как надежный партнер для рекламы в TG. Размещайте интеграции уже сегодня и привлекайте новых клиентов вместе с Telega.in!
Вы снова сможете добавить каналы в корзину из каталога
Комментарий