This media is not supported in your browser
VIEW IN TELEGRAM
🔥 КАК РАБОТАЕТ ВНИМАНИЕ (ATTENTION) В ТРАНСФОРМЕРАХ
Механизм внимания - это способ для модели “смотреть” на разные слова в тексте и решать, какие из них сейчас важнее.
Представь фразу: “Я положил ключи на стол, потому что он был рядом”.
Слово “он” должно ссылаться на “стол”, а не на “ключи”.
Внимание делает ровно это - для каждого слова вычисляет, на какие другие слова нужно опираться сильнее.
Как это работает в одном абзаце:
Для каждого токена модель строит три вектора - Query (что я ищу), Key (что я из себя представляю), Value (какую информацию несу).
Считается “похожесть” Query к каждому Key - это оценки важности.
Оценки нормализуются (softmax), чтобы получились веса от 0 до 1.
Итоговое представление токена - это взвешенная сумма Value по всем токенам.
То есть модель смешивает информацию из контекста, но делает это умно - больше веса тем словам, которые сейчас важны.
Почему это суперсила:
вместо того чтобы читать текст строго слева направо, модель может связывать дальние куски, находить нужные факты и строить смысловые зависимости. Именно поэтому трансформеры так хорошо работают с языком, кодом и длинным контекстом.
Механизм внимания - это способ для модели “смотреть” на разные слова в тексте и решать, какие из них сейчас важнее.
Представь фразу: “Я положил ключи на стол, потому что он был рядом”.
Слово “он” должно ссылаться на “стол”, а не на “ключи”.
Внимание делает ровно это - для каждого слова вычисляет, на какие другие слова нужно опираться сильнее.
Как это работает в одном абзаце:
Для каждого токена модель строит три вектора - Query (что я ищу), Key (что я из себя представляю), Value (какую информацию несу).
Считается “похожесть” Query к каждому Key - это оценки важности.
Оценки нормализуются (softmax), чтобы получились веса от 0 до 1.
Итоговое представление токена - это взвешенная сумма Value по всем токенам.
То есть модель смешивает информацию из контекста, но делает это умно - больше веса тем словам, которые сейчас важны.
Почему это суперсила:
вместо того чтобы читать текст строго слева направо, модель может связывать дальние куски, находить нужные факты и строить смысловые зависимости. Именно поэтому трансформеры так хорошо работают с языком, кодом и длинным контекстом.
import numpy as np
def softmax(x: np.ndarray) -> np.ndarray:
x = x - np.max(x) # стабилизация
e = np.exp(x)
return e / np.sum(e)
# Допустим, у нас 3 токена в контексте.
# Для простоты возьмём маленькую размерность векторов (d=2).
# Query - "что я ищу"
# Key - "что я такое"
# Value - "какую инфу несу"
Q = np.array([1.0, 0.5]) # Query для текущего токена (например, слово "он")
K = np.array([
[1.0, 0.0], # Key токена 1 (например, "ключи")
[0.9, 0.1], # Key токена 2 (например, "стол")
[0.0, 1.0], # Key токена 3 (например, "рядом")
])
V = np.array([
[10.0, 0.0], # Value токена 1
[0.0, 10.0], # Value токена 2
[5.0, 5.0], # Value токена 3
])
# 1) Считаем "похожесть" Q на каждый K через скалярное произведение
scores = K @ Q # shape: (3,)
print("scores:", scores)
# 2) Нормализуем оценки -> получаем веса внимания
weights = softmax(scores)
print("attention weights:", weights)
# 3) Итоговый вектор = взвешенная сумма Value
output = weights @ V # shape: (2,)
print("output (context mixed):", output)
# Интерпретация:
# Если вес токена 2 ("стол") самый большой, значит модель "смотрит" на него сильнее всего.
❤5🙏3👍1🔥1
🔥 Полезная подборка каналов только код, практика и самые передовые инструменты, которые используют разработчики прямо сейчас.👇
🖥 ИИ: t.me/ai_machinelearning_big_data
🖥 Python: t.me/pythonl
🖥 Linux: t.me/linuxacademiya
🖥 C++ t.me/cpluspluc
🖥 Docker: t.me/DevopsDocker
🖥 Хакинг: t.me/linuxkalii
🖥 Devops: t.me/DevOPSitsec
👣 Golang: t.me/Golang_google
🖥 Аналитика: t.me/data_analysis_ml
🖥 Javascript: t.me/javascriptv
🖥 C#: t.me/csharp_ci
🖥 Java: t.me/javatg
🖥 Базы данных: t.me/sqlhub
👣 Rust: t.me/rust_code
🤖 Технологии: t.me/vistehno
💰 Экономика и инвестиции в ИИ t.me/financeStable
💼 Актуальные вакансии: t.me/addlist/_zyy_jQ_QUsyM2Vi
🖥 Chatgpt бот в тг: t.me/Chatgpturbobot
📚 Бесплатные ит-книги: https://t.me/addlist/HwywK4fErd8wYzQy
🖥 Подборка по Golang: https://t.me/addlist/MUtJEeJSxeY2YTFi
⚡️ Лучшие ИИ ресурсы: https://t.me/addlist/2Ls-snqEeytkMDgy
Самое лучшее в этом: ты учишься даже тогда, когда “нет времени, просто потому что читаешь правильную ленту.
💰 Экономика и инвестиции в ИИ t.me/financeStable
💼 Актуальные вакансии: t.me/addlist/_zyy_jQ_QUsyM2Vi
📚 Бесплатные ит-книги: https://t.me/addlist/HwywK4fErd8wYzQy
⚡️ Лучшие ИИ ресурсы: https://t.me/addlist/2Ls-snqEeytkMDgy
Самое лучшее в этом: ты учишься даже тогда, когда “нет времени, просто потому что читаешь правильную ленту.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2👍1🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
🐍 Самая крутая фича Python 3.14 - `sys.remote_exec()` (объясняю по-человечески)
Идея простая:
✅ у тебя уже запущено Python-приложение (например FastAPI в Docker/K8s)
✅ оно уже дошло до нужного состояния (в памяти есть переменные, сессии, кеши)
❌ но тебе нужно посмотреть “что внутри” или поставить дебаггер
Раньше ты делал так:
- добавлял debugpy в код
- перезапускал приложение
- заново воспроизводил баг
Python 3.14 даёт новый чит-код:
sys.remote_exec() позволяет выполнить кусок Python-кода ВНУТРИ уже работающего Python-процесса.
То есть буквально “вколоть” скрипт в живой процесс.
Это как:
🔹 зайти внутрь процесса
🔹 выполнить print(), импорт, запись переменных
🔹 или даже подключить дебаггер
без рестарта вообще.
Пример: что можно сделать через sys.remote_exec()
Допустим у нас есть работающий процесс Python.
1) Мы хотим “добавить” туда код:
- вывести PID
- посмотреть глобальные переменные
- записать лог
- даже поменять значение переменной
Пример 2: инжектим debugpy (дебаг без рестарта)
Самая хайповая штука - можно подключить debugpy в уже живое приложение.
То есть приложение уже крутится, у него есть состояние, и ты просто включаешь “прослушку” дебаггера на порту.
Дальше:
- ты делаешь port-forward (если Docker/K8s)
- подключаешь VS Code / PyCharm / nvim к localhost:5679
- ставишь breakpoints и дебажишь как обычно
Что важно
1) Это не “удалённое выполнение” как ssh.
Это прям “внутри процесса” - доступ к памяти, переменным, импортам.
2) Это опасно для продакшена.
Требует прав уровня SYS_PTRACE (можно читать/менять процессы) - поэтому только для локалки/стендов.
3) Это может стать стандартом для отладки контейнеров:
- баг воспроизводится только в k8s
- рестарт = баг пропал
- а тут просто подключился и посмотрел
https://www.youtube.com/watch?v=bYPFktmui4c
Идея простая:
✅ у тебя уже запущено Python-приложение (например FastAPI в Docker/K8s)
✅ оно уже дошло до нужного состояния (в памяти есть переменные, сессии, кеши)
❌ но тебе нужно посмотреть “что внутри” или поставить дебаггер
Раньше ты делал так:
- добавлял debugpy в код
- перезапускал приложение
- заново воспроизводил баг
Python 3.14 даёт новый чит-код:
sys.remote_exec() позволяет выполнить кусок Python-кода ВНУТРИ уже работающего Python-процесса.
То есть буквально “вколоть” скрипт в живой процесс.
Это как:
🔹 зайти внутрь процесса
🔹 выполнить print(), импорт, запись переменных
🔹 или даже подключить дебаггер
без рестарта вообще.
Пример: что можно сделать через sys.remote_exec()
Допустим у нас есть работающий процесс Python.
1) Мы хотим “добавить” туда код:
- вывести PID
- посмотреть глобальные переменные
- записать лог
- даже поменять значение переменной
# Этот код выполняется СНАРУЖИ и запускает инжект внутрь процесса
import sys
target_pid = 12345 # PID запущенного Python процесса
payload = r"""
import os
import time
print("✅ Injected into running process!")
print("PID:", os.getpid())
print("Time:", time.time())
# Пример: читаем что есть в глобальном пространстве
g = globals()
print("Globals keys sample:", list(g.keys())[:10])
# Пример: создаём переменную прямо в процессе
INJECTED_FLAG = True
"""
# Новое API Python 3.14
sys.remote_exec(target_pid, payload)
Пример 2: инжектим debugpy (дебаг без рестарта)
Самая хайповая штука - можно подключить debugpy в уже живое приложение.
То есть приложение уже крутится, у него есть состояние, и ты просто включаешь “прослушку” дебаггера на порту.
import sys
target_pid = 12345 # PID работающего uvicorn / fastapi процесса
payload = r"""
import debugpy
HOST = "0.0.0.0"
PORT = 5679
debugpy.listen((HOST, PORT))
print(f"🐞 debugpy is listening on {HOST}:{PORT}")
# если хочешь остановить выполнение и ждать пока подключишь IDE:
# debugpy.wait_for_client()
# print("✅ debugger attached!")
"""
sys.remote_exec(target_pid, payload)
Дальше:
- ты делаешь port-forward (если Docker/K8s)
- подключаешь VS Code / PyCharm / nvim к localhost:5679
- ставишь breakpoints и дебажишь как обычно
Что важно
1) Это не “удалённое выполнение” как ssh.
Это прям “внутри процесса” - доступ к памяти, переменным, импортам.
2) Это опасно для продакшена.
Требует прав уровня SYS_PTRACE (можно читать/менять процессы) - поэтому только для локалки/стендов.
3) Это может стать стандартом для отладки контейнеров:
- баг воспроизводится только в k8s
- рестарт = баг пропал
- а тут просто подключился и посмотрел
https://www.youtube.com/watch?v=bYPFktmui4c
🔥6❤5👍2
This media is not supported in your browser
VIEW IN TELEGRAM
Автокликер — одна из самых полезных мини-автоматизаций на Python. Он помогает убрать рутину: клики в интерфейсах, тестирование кнопок, автоматическое выполнение повторяющихся действий в браузере или приложениях.
Главная идея — управлять мышью программно. Библиотека pyautogui позволяет:
• кликать в нужной точке экрана
• двигать курсор
• задавать интервалы между действиями
• быстро остановить скрипт при необходимости
Такой подход часто используют для:
• UI-тестирования
• автоматизации веб-задач
• игр и симуляторов
• массовых операций в админках
Важно: всегда добавляйте задержку перед запуском, чтобы успеть переключиться в нужное окно. И используйте паузы между кликами, чтобы не перегружать систему.
Установка:
pip install pyautogui
import pyautogui
import time
# Безопасность: переместите мышь в верхний левый угол, чтобы аварийно остановить
pyautogui.FAILSAFE = True
# Пауза перед стартом (5 секунд, чтобы открыть нужное окно)
print("Старт через 5 секунд...")
time.sleep(5)
# Координаты для клика (узнать можно через pyautogui.position())
x, y = 800, 500
# Количество кликов
clicks = 100
# Интервал между кликами (в секундах)
interval = 0.5
for i in range(clicks):
pyautogui.click(x, y)
print(f"Клик {i+1}")
time.sleep(interval)
print("Готово!")
⚡️Max
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤4🔥2
packaging стал ощутимо быстрее — и это реально заметно в больших проектахСвежий апдейт библиотеки
packaging (библиотека, которую используют pip и многие инструменты для сравнения версий и работы с зависимостями) принёс заметное ускорение ключевых операций. Это важно, потому что такие функции вызываются тысячи раз при установке зависимостей, разрешении версий и т.д.Главное, что ускорили:
• Быстрее парсинг и сравнение версий (`Version` и `SpecifierSet`).
• Некоторые операции (сравнения, фильтрации, хэши) стали в несколько раз быстрее.
• Оптимизации направлены на самые “узкие места”, которые чаще всего тормозят pip и другие инструменты.
Почему это важно для тебя:
• pip будет работать быстрее при установке больших стеков зависимостей.
• Инструменты сборки и CI/CD быстрее считают совместимость версий.
• Оптимизация сделана без потери корректности и без усложнения API.
В целом это пример, как базовая утилита в экосистеме Python может ускориться не из-за нового синтаксиса, а за счёт глубокого профилирования и целевых улучшений.
Подробнее о скорости и измерениях — в исходном разборе изменений.
https://iscinumpy.dev/post/packaging-faster/
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3
Forwarded from Machinelearning
This media is not supported in your browser
VIEW IN TELEGRAM
Пользователи Windows теперь могут использовать все возможности Cowork: прямой доступ к файлам, выполнение многошаговых задач, поддержку плагинов и всех коннекторов MCP. Ранее этот функционал был эксклюзивом для яблочной платформы.
Попутно Anthropic представила гибкую систему инструкций. Вы можете задать глобальные предпочтения: тон, формат ответов или описание своей роли, они будут применяться ко всем чатам.
Также появились инструкции уровня папок: они активируются автоматически, когда вы работаете в конкретной директории. Обновлять эти настройки можно прямо в ходе диалога, не копаясь в меню.
Инструмент все еще в стадии research preview и открыт для всех пользователей платных тарифов. Для доступа достаточно скачать свежую версию клиента с сайта.
@ai_machinelearning_big_data
#news #ai #ml
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4🔥4👍2
This media is not supported in your browser
VIEW IN TELEGRAM
🐳 Как запустить DeepSeek у себя на ПК через Python
Главная ошибка новичков - сразу ставить огромные модели.
Начни с компактной версии, проверь, что всё запускается, и только потом увеличивай размер.
Алгоритм простой:
1) ставим зависимости
2) качаем лёгкую модель DeepSeek
3) проверяем, что она отвечает
4) при необходимости включаем GPU или берём квантизованную версию
Так ты избежишь вылетов, перегрузки памяти и быстрее получишь рабочий результат.
Главная ошибка новичков - сразу ставить огромные модели.
Начни с компактной версии, проверь, что всё запускается, и только потом увеличивай размер.
Алгоритм простой:
1) ставим зависимости
2) качаем лёгкую модель DeepSeek
3) проверяем, что она отвечает
4) при необходимости включаем GPU или берём квантизованную версию
Так ты избежишь вылетов, перегрузки памяти и быстрее получишь рабочий результат.
установить зависимости
pip install transformers accelerate torch sentencepiece
# пример запуска DeepSeek из Python
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch
model_name = "deepseek-ai/deepseek-coder-6.7b-base"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(
model_name,
torch_dtype=torch.float16,
device_map="auto" # если есть GPU — модель сама её использует
)
prompt = "Напиши на Python функцию, которая проверяет, простое ли число."
inputs = tokenizer(prompt, return_tensors="pt").to(model.device)
outputs = model.generate(
**inputs,
max_new_tokens=160,
temperature=0.4
)
print(tokenizer.decode(outputs[0], skip_special_tokens=True))
👍7❤1
This media is not supported in your browser
VIEW IN TELEGRAM
Идеальный старт для проекта Django: конфигурация окружения.
Сохрани себе идеальный шаблон virtual environment и основных настроек для каждого нового проекта Django. Это упростит процесс настройки окружения и позволит избежать распространенных ошибок.
Сохрани себе идеальный шаблон virtual environment и основных настроек для каждого нового проекта Django. Это упростит процесс настройки окружения и позволит избежать распространенных ошибок.
# Создание виртуального окружения
python3 -m venv venv
# Активация виртуального окружения
source venv/bin/activate
# Установка основных зависимостей
pip install django djangorestframework psycopg2
# Создание файла requirements.txt
pip freeze > requirements.txt
# Инициализация нового проекта Django
django-admin startproject myproject
# Переход в директорию проекта
cd myproject
# Запуск сервера для проверки
python manage.py runserver
❤3🔥2👍1
Здесь на пальцах объясняют не только как писать SQL-запросы, а строить настоящие backend-сервисы с базой данных как у профи.
В этом курсе ты шаг за шагом создашь REST API на FastAPI + PostgreSQL:
от установки среды и первых таблиц - до масштабируемого приложения с безопасностью и CRUD-операциями.
🔹 На практике разберете:
• SQL-запросы, фильтры, агрегаты и подзапросы
• Связи между таблицами и нормализацию БД
• Взаимодействие Python и PostgreSQL
• Реализацию REST API и подключение базы
• Оптимизацию и разбор реальных задач с собеседований
⚡ После курса у вас будет свой работающий API-проект и реальные навыки работы с PostgreSQL в продакшене.
🎁 Торопись пока действует скидка в честь нвого года!
🚀 Прокачаю свои знания: https://stepik.org/course/255542/
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5👍3🔥2
This media is not supported in your browser
VIEW IN TELEGRAM
Сохрани себе полезную шпаргалку по регулярным выражениям в Python. Эти выражения позволяют эффективно находить и обрабатывать текстовые данные. Важно знать базовые функции и методы, чтобы упростить свою работу с текстом.
import re
# Пример текста
text = "Контакт: example@example.com, телефон: +7-123-456-7890"
# Регулярные выражения для извлечения email и телефона
email_pattern = r'\b[\w.-]+?@\w+?\.\w{2,4}\b'
phone_pattern = r'\+?\d{1,2}[- ]?\d{3}[- ]?\d{3}[- ]?\d{4}'
# Найти все совпадения
emails = re.findall(email_pattern, text)
phones = re.findall(phone_pattern, text)
# Результат
print("Найденные email:", emails)
print("Найденные телефоны:", phones)
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥10❤3
⚠️ ИИ вызывает новый дефицит памяти
Дата-центры для AI потребляют столько памяти, что её начинает не хватать остальной электронике.
Что происходит на рынке:
- Контрактные цены на DRAM выросли на 75% всего за месяц
- Поставщики пересматривают цены ежедневно
- Основные объёмы памяти уходят в AI-серверы
Главная причина - переход на HBM (High Bandwidth Memory).
HBM - это многослойная память (8–12 слоёв DRAM), которая работает рядом с ускорителями Nvidia и AMD и обеспечивает экстремальную пропускную способность.
Масштаб потребления:
- Один ускоритель Nvidia Blackwell — до 192 GB HBM
- Система NVL72 - 13.4 TB памяти
Прогнозы:
- Спрос на HBM вырастет на 70% в 2026 году
- Уже сейчас HBM занимает 23% производства DRAM (против 19% в 2025)
Что это значит для рынка:
Обычной памяти становится меньше для:
- смартфонов
- ПК
- автомобилей
- игровых консолей
Выигрывают производители:
Samsung, SK Hynix, Micron - рост маржи.
Проигрывают продуктовые команды и компании,
которые не могут заранее выкупить поставки.
Главный вывод:
ИИ начинает влиять не только на софт и модели.
Он уже перераспределяет физические ресурсы всей индустрии электроники.
Дата-центры для AI потребляют столько памяти, что её начинает не хватать остальной электронике.
Что происходит на рынке:
- Контрактные цены на DRAM выросли на 75% всего за месяц
- Поставщики пересматривают цены ежедневно
- Основные объёмы памяти уходят в AI-серверы
Главная причина - переход на HBM (High Bandwidth Memory).
HBM - это многослойная память (8–12 слоёв DRAM), которая работает рядом с ускорителями Nvidia и AMD и обеспечивает экстремальную пропускную способность.
Масштаб потребления:
- Один ускоритель Nvidia Blackwell — до 192 GB HBM
- Система NVL72 - 13.4 TB памяти
Прогнозы:
- Спрос на HBM вырастет на 70% в 2026 году
- Уже сейчас HBM занимает 23% производства DRAM (против 19% в 2025)
Что это значит для рынка:
Обычной памяти становится меньше для:
- смартфонов
- ПК
- автомобилей
- игровых консолей
Выигрывают производители:
Samsung, SK Hynix, Micron - рост маржи.
Проигрывают продуктовые команды и компании,
которые не могут заранее выкупить поставки.
Главный вывод:
ИИ начинает влиять не только на софт и модели.
Он уже перераспределяет физические ресурсы всей индустрии электроники.
❤6🤬6👍4🥰1
17 февраля(уже завтра!) в 19:00 по мск приходи на прямой эфир с реальным собеседованием на Middle разработчика.
Почему точно нужно прийти:
Это бесплатно. Эфир проходит в рамках менторской программы от ШОРТКАТ для Python-разработчиков, которые хотят повысить свой грейд, ЗП и прокачать скиллы.
Переходи в нашего бота, чтобы получить ссылку на эфир → @shortcut_py_bot
Реклама.
О рекламодателе.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1🖕1
This media is not supported in your browser
VIEW IN TELEGRAM
Важно знать, что для эффективного тестирования кода можно использовать библиотеку
unittest в Python. Это позволит вам автоматически проверять функциональность и находить ошибки. Вот пример простого теста для функции сложения:
import unittest
def add(a, b):
return a + b
class TestAddFunction(unittest.TestCase):
def test_add_positive(self):
self.assertEqual(add(1, 2), 3)
def test_add_negative(self):
self.assertEqual(add(-1, 1), 0)
def test_add_zero(self):
self.assertEqual(add(0, 0), 0)
if __name__ == '__main__':
unittest.main()
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4❤3
🔥Яндекс Образование приглашает студентов бакалавриата и специалитета IT-направлений со всей России на бесплатный студкемп по аппаратной разработке умных устройств.
Основные моменты:
🗓 Даты: с 13 по 24 апреля
📍 Место: Москва
💡 Формат: интенсивное офлайн-обучение
В программе:
- Полный цикл разработки умного устройства: от прототипа до готового продукта.
- ML-интеграция в устройства с сохранением скорости и предсказуемости работы даже при ограниченных ресурсах.
- Современные подходы к исследованиям и разработке умных устройств.
Кто с вами будет работать?
- Специалисты Яндекса, которые создавали Алису и другие умные устройства компании.
- Преподаватели ФПМИ МФТИ, ФКН ВШЭ.
- Эксперты ШАД.
Участие бесплатное. Яндекс Образование покроет расходы на дорогу и проживание всем, кто пройдет отбор. Для участия нужно уметь работать с командной строкой и знать C++ или Java/Kotlin.
🔥 Набор открыт до 22 февраля, поэтому спешим регистрироваться по ссылке
Основные моменты:
🗓 Даты: с 13 по 24 апреля
📍 Место: Москва
💡 Формат: интенсивное офлайн-обучение
В программе:
- Полный цикл разработки умного устройства: от прототипа до готового продукта.
- ML-интеграция в устройства с сохранением скорости и предсказуемости работы даже при ограниченных ресурсах.
- Современные подходы к исследованиям и разработке умных устройств.
Кто с вами будет работать?
- Специалисты Яндекса, которые создавали Алису и другие умные устройства компании.
- Преподаватели ФПМИ МФТИ, ФКН ВШЭ.
- Эксперты ШАД.
Участие бесплатное. Яндекс Образование покроет расходы на дорогу и проживание всем, кто пройдет отбор. Для участия нужно уметь работать с командной строкой и знать C++ или Java/Kotlin.
🔥 Набор открыт до 22 февраля, поэтому спешим регистрироваться по ссылке
❤4🥴2👎1🖕1
This media is not supported in your browser
VIEW IN TELEGRAM
Ты неправильно читаешь файлы в Python, если открываешь их без контекстного менеджера и сразу грузишь всё в память.
Контекстный менеджер with гарантирует, что файл закроется даже при ошибке - без утечек дескрипторов и странных багов в проде.
Читать весь файл через .read() удобно, но на больших логах и выгрузках ты просто съедаешь память. Правильнее - идти построчно: это быстро, экономно и идеально для обработки потоков данных.
Буферизация тоже важна: можно явно задать buffering, чтобы ускорить чтение на медленных дисках или сетевых FS.
from pathlib import Path
path = Path("app.log")
with path.open("r", encoding="utf-8", buffering=1024 * 1024) as f:
for line in f:
line = line.strip()
if not line or line.startswith("#"):
continue
if "ERROR" in line:
print(line)
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4👍1
Ты научишься делать те, которые живут в проде.
Это не про BeautifulSoup ради галочки.
Это про системы сбора данных, которые:
• не падают от мелких правок на сайте
• собирают данные в разы быстрее
• обновляют всё сами по расписанию
• обходят ограничения и баны
• выглядят как сервис, а не хаос из файлов
Ты начнёшь видеть сайты не как страницы, а как источники данных, к которым можно подключиться.
В итоге ты сможешь:
• забирать данные для своих проектов
• автоматизировать чужую рутину
• делать инструменты для аналитики
• брать коммерческие заказы на сбор данных
Это навык, который напрямую превращается в деньги.
Не “знаю Python”, а умею добывать данные из интернета профессионально.
🎁 48 часов скидка 50% на Stepik: https://stepik.org/a/269942/
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2👍2👎1
This media is not supported in your browser
VIEW IN TELEGRAM
⚡️ Как находить утечки памяти в Python с помощью tracemalloc
Сохрани себе: для обнаружения утечек памяти в Python используй модуль
Сохрани себе: для обнаружения утечек памяти в Python используй модуль
tracemalloc. Этот инструмент поможет тебе быстро отследить, где происходит выделение памяти, и выявить проблемные участки кода.
import tracemalloc
def memory_leak():
a = []
for i in range(10000):
a.append('leak' * 100)
tracemalloc.start()
memory_leak()
snapshot = tracemalloc.take_snapshot()
top_stats = snapshot.statistics('lineno')
print("[Top 10 memory allocations]")
for stat in top_stats[:10]:
print(stat)
👍5
Самое смешное - код настоящий и вполне рабочий.
Даже Pixar не пишет фейковый код.
https://x.com/toystory/status/2024529641571320101?s=20
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥3❤2
This media is not supported in your browser
VIEW IN TELEGRAM
🔥 Быстрый старт HTTP API на FastAPI с валидацией данных
Сохрани себе шаблон для быстрого старта HTTP API на FastAPI с базовой валидацией данных. Используй Pydantic для определения схемы данных и автоматической генерации документации.
Сохрани себе шаблон для быстрого старта HTTP API на FastAPI с базовой валидацией данных. Используй Pydantic для определения схемы данных и автоматической генерации документации.
from fastapi import FastAPI
from pydantic import BaseModel
app = FastAPI()
class Item(BaseModel):
name: str
price: float
is_offer: bool = None
@app.post("/items/", response_model=Item)
async def create_item(item: Item):
return item
@app.get("/")
async def read_root():
return {"message": "Welcome to the FastAPI!"}
👎4😁4❤2🔥1