Forwarded from PyCon Russia
Ждали-ждали и дождались! 💥Открыли записи докладов с PyCon Russia 2023 для всех. Смотрите, набирайтесь пользы, делитесь с друзьями и коллегами.
А всех, кто хочет получить самую актуальную информацию и услышать про самые свежие кейсы Python-разработки, ждем 2 февраля на EkbPy в Екатеринбурге. Участвовать можно как офлайн, так и онлайн. Билеты и программа здесь.
▫️Павел Плюснин. Генерация данных для квантования нейронных сетей: Data-Free Quantization
▫️Артур Сапрыкин. Декомпозиция данных в анализе временных рядов
▫️Александр Никулин. Первая open-source библиотека для Offline RL исследователей
▫️Павел Горшенин. Поиск по научным текстам: эластик и вектора. Как ходить по граблям и не оступиться?
▫️Николай Безносов. ML платформа на Open Source: от Data Governance до MLOps
▫️Максим Афанасьев. Впихиваем невпихуемое: хостим несколько ML-сервисов на одной GPU
▫️Денис Аникин. Лимитируй это
▫️Б.Алиев. Python Шредингера:когда ваш код и жив,и мертв,а весь мир с замиранием ожидает его выполнения
▫️Н. Матвеев. Прогнозирование нагрузки на базовые станции, или Как работать с временными рядами в 2023
▫️Андрей Литвинов. Serverless для деплоя ml/dl моделей (с gpu зависимостью)
▫️Карина Кванчиани. Автоматизация процесса создания набора данных на примере РЖЯ
▫️Михаил Дьяченко. Software vs Hardware. Противостояние
▫️Евгений Афонасьев. А побыстрее можно?
▫️Артём Стрельцов. Утечки памяти и дедлоки: как выстрелить себе в ногу
▫️Андрей Шубин. Отладка на низком уровне
▫️Данил Крыцын. Легковесный ЧПУ с EtherCAT на python и С
▫️Петер Ибрагимов. Как использовать serverless и не наломать дров
▫️Михаил Гурбанов. Да кто такие эти ваши тайп-чекеры?
▫️Данил Губанов. Через боль с dependency-injector
▫️Андрей Власовских. Функциональщина в Python — это плохая идея?
▫️Андрей Гейн. Mojo — революция или хайп?
▫️Николай Хитров. Архитектура кнута и пряника
▫️Даниил Сербинович. Эволюция нового сервиса и типичные ошибки при его развитии
▫️Сергей Вариасов. Почему мы написали еще один фреймворк для Python
▫️Круглый стол
▫️Workshop PyCon 2023
А всех, кто хочет получить самую актуальную информацию и услышать про самые свежие кейсы Python-разработки, ждем 2 февраля на EkbPy в Екатеринбурге. Участвовать можно как офлайн, так и онлайн. Билеты и программа здесь.
▫️Павел Плюснин. Генерация данных для квантования нейронных сетей: Data-Free Quantization
▫️Артур Сапрыкин. Декомпозиция данных в анализе временных рядов
▫️Александр Никулин. Первая open-source библиотека для Offline RL исследователей
▫️Павел Горшенин. Поиск по научным текстам: эластик и вектора. Как ходить по граблям и не оступиться?
▫️Николай Безносов. ML платформа на Open Source: от Data Governance до MLOps
▫️Максим Афанасьев. Впихиваем невпихуемое: хостим несколько ML-сервисов на одной GPU
▫️Денис Аникин. Лимитируй это
▫️Б.Алиев. Python Шредингера:когда ваш код и жив,и мертв,а весь мир с замиранием ожидает его выполнения
▫️Н. Матвеев. Прогнозирование нагрузки на базовые станции, или Как работать с временными рядами в 2023
▫️Андрей Литвинов. Serverless для деплоя ml/dl моделей (с gpu зависимостью)
▫️Карина Кванчиани. Автоматизация процесса создания набора данных на примере РЖЯ
▫️Михаил Дьяченко. Software vs Hardware. Противостояние
▫️Евгений Афонасьев. А побыстрее можно?
▫️Артём Стрельцов. Утечки памяти и дедлоки: как выстрелить себе в ногу
▫️Андрей Шубин. Отладка на низком уровне
▫️Данил Крыцын. Легковесный ЧПУ с EtherCAT на python и С
▫️Петер Ибрагимов. Как использовать serverless и не наломать дров
▫️Михаил Гурбанов. Да кто такие эти ваши тайп-чекеры?
▫️Данил Губанов. Через боль с dependency-injector
▫️Андрей Власовских. Функциональщина в Python — это плохая идея?
▫️Андрей Гейн. Mojo — революция или хайп?
▫️Николай Хитров. Архитектура кнута и пряника
▫️Даниил Сербинович. Эволюция нового сервиса и типичные ошибки при его развитии
▫️Сергей Вариасов. Почему мы написали еще один фреймворк для Python
▫️Круглый стол
▫️Workshop PyCon 2023
Forwarded from Python книги
Forwarded from Букич IT
🖥 Практический Курс по Продвинутому Python (2023)
🎓 Чему вы научитесь:
⏺ Использование модуля Math.
⏺ Функции all() и any()
⏺ Докстринги и приятная печать данных.
⏺ Работа с zip архивами, csv файлами, json файлами, конфигурационными и текстовыми файлами, используя контекстный менеджер
⏺ Работа со случайными числами и генерация паролей.
⏺ Работа с датой и временем (включая интервалы и продвинутое форматирование).
⏺ Профилирование программы при помощи модуля cProfile.
⏺ Как создавать таймеры для замера времени выполнения частей программы.
⏺ Генераторы Списков, Множеств, Словарей.
⏺ Работа со строками, включая продвинутые методы интерполяции, форматирования и сырые строки.
⏺ Итераторы и Генераторы (включая продвинутые решения).
⏺ Манипулирование данными при помощи модулей Operator и Array
⏺ Принцип глубокого и неглубокого (поверхностного) копирования.
⏺ Логирование (включая продвинутое Логирование).
⏺ Регулярные выражения (Метасимволы, Якоря, Квантификаторы, а также продвинутые конструкции).
⏺ Рекурсия.
⏺ Декораторы.
📚 Русский
💰 50$
📂 1.9GB
🕔 5:40минут
📌 Скачать курс
Букич IT
Букич IT
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Start Career in DS
🐍 Вы не знаете Python
После прочтения вот этой статьи со 100 вопросами по Python вам в голову с большой вероятностью придёт мысль, что стоило бы его подучить)
Конечно, вряд-ли большинство вопросов из статьи спросят на собеседовании на стажера-джуна Data Scientistа, но все-таки не мешало бы знать, например, что такое GIL, чтобы не ударить в грязь лицом перед друзьями-бэкендерами 😁
Вот ещё несколько интересных вопросов оттуда:
– Как реализуется управление памятью в python?
– Как использовать глобальные переменные? Это хорошая идея?
– Чем фреймворк отличается от библиотеки?
Читайте статью, и обязательно ставьте огонёчки 🔥 под этим постом, если узнали из неё что-то новое!
После прочтения вот этой статьи со 100 вопросами по Python вам в голову с большой вероятностью придёт мысль, что стоило бы его подучить)
Конечно, вряд-ли большинство вопросов из статьи спросят на собеседовании на стажера-джуна Data Scientistа, но все-таки не мешало бы знать, например, что такое GIL, чтобы не ударить в грязь лицом перед друзьями-бэкендерами 😁
Вот ещё несколько интересных вопросов оттуда:
– Как реализуется управление памятью в python?
– Как использовать глобальные переменные? Это хорошая идея?
– Чем фреймворк отличается от библиотеки?
Читайте статью, и обязательно ставьте огонёчки 🔥 под этим постом, если узнали из неё что-то новое!
Forwarded from Библиотека Питониста
Forwarded from Python для новичков
140_python_exercises.pdf
1.7 MB
Forwarded from DE
Ребята, которые сделали
Также они взяли на себя дальнейшую поддержку
Выглядит круто.
Анонс: https://astral.sh/blog/uv
Репозиторий проекта: https://github.com/astral-sh/uv
ruff
, выпустили свой тул для работы с зависимостями для python - uv
. Они позиционируют его как замену pip
, pip-tools
и virtualenv
. Написан на расте, поэтому работает быстро.Также они взяли на себя дальнейшую поддержку
rye
(который изначально сделал Армин Ронахер, автор flask) и судя по всем планируют постепенно эти проекты объединить в один.Выглядит круто.
Анонс: https://astral.sh/blog/uv
Репозиторий проекта: https://github.com/astral-sh/uv
astral.sh
uv: Python packaging in Rust
uv is an extremely fast Python package installer and resolver, designed as a drop-in alternative to pip and pip-tools.
Forwarded from Хитрый Питон
Ребята, которые сделали
Также они взяли на себя дальнейшую поддержку
Выглядит вкусно, попробую поиграться с
Анонс: https://astral.sh/blog/uv
Репозиторий проекта: https://github.com/astral-sh/uv
ruff
, выпустили свой тул для работы с зависимостями для python - uv
. Они позиционируют его как замену pip
, pip-tools
и virtualenv
. Написан на расте, поэтому работает быстро.Также они взяли на себя дальнейшую поддержку
rye
(который изначально сделал Армин Ронахер, автор flask) и судя по всем планируют постепенно эти проекты объединить в один.Выглядит вкусно, попробую поиграться с
uv
на пет-проектах.Анонс: https://astral.sh/blog/uv
Репозиторий проекта: https://github.com/astral-sh/uv
astral.sh
uv: Python packaging in Rust
uv is an extremely fast Python package installer and resolver, designed as a drop-in alternative to pip and pip-tools.
Forwarded from РУССКИЙ КОД
Вы узнаете:
До встречи
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Антон Ширяев
Недавно вышел интересный проект pixi - https://prefix.dev/
Это проект от создателей Anaconda, направленный на устранение главного недостатка проекта - отсутствия воспроизводимости рабочего окружения.
Создатели пытались взять лучшее что есть в conda и poetry )
Был бы рад услышать комментарий "poetry vs pixi" =)
Это проект от создателей Anaconda, направленный на устранение главного недостатка проекта - отсутствия воспроизводимости рабочего окружения.
Создатели пытались взять лучшее что есть в conda и poetry )
Был бы рад услышать комментарий "poetry vs pixi" =)
prefix.dev
prefix.dev – solving software package management
The software package management platform for Python, C++, R, Rust and more
Forwarded from Хитрый Питон
Мы у себя в компании начали аккуратно переходить на новый менеджер пакетов
Так как тула новая, пришлось ждать пока пофиксят 2 бага в которые мы упирались. После чего все равно не заработало, но проблема была уже на нашей стороне. Но самое главное, что после решения этих проблем все работает как часы уже вторую неделю 🙂
Все сложности были при использовании нескольких индексов:
- политика разрешения зависимостей
- авторы решили не переиспользовать переменную окружения
- в
Но какая же
1. Внутренняя библиотека (меньше 20 зависимостей)
- pip-tools 4 минуты 7 секунд
- с uv 10 секунд
2. Большой старый монолит на Django (больше 100 зависимостей):
- с pip-tools 18 минут 19 секунд
- с uv 32 секунды (!!!)
В общем я очень доволен результатом и рекомендую как минимум посмотреть на эту тулзу.
uv
(https://github.com/astral-sh/uv) и решил рассказать, как все идет.Так как тула новая, пришлось ждать пока пофиксят 2 бага в которые мы упирались. После чего все равно не заработало, но проблема была уже на нашей стороне. Но самое главное, что после решения этих проблем все работает как часы уже вторую неделю 🙂
Все сложности были при использовании нескольких индексов:
- политика разрешения зависимостей
uv
отличается от pip
- это важно, когда используется свой индекс в добавок к pypi- авторы решили не переиспользовать переменную окружения
PIP_EXTRA_INDEX_URL
- для uv
надо задавать UV_EXTRA_INDEX_URL
- в
UV_EXTRA_INDEX_URL
лушче прописывать `/simple`-индекс, у меня сначала было не так, pip работал, а uv уже нетНо какая же
uv
офигенно быстрая. Вот примеры двух наших разных проектов:1. Внутренняя библиотека (меньше 20 зависимостей)
- pip-tools 4 минуты 7 секунд
- с uv 10 секунд
2. Большой старый монолит на Django (больше 100 зависимостей):
- с pip-tools 18 минут 19 секунд
- с uv 32 секунды (!!!)
В общем я очень доволен результатом и рекомендую как минимум посмотреть на эту тулзу.
GitHub
GitHub - astral-sh/uv: An extremely fast Python package and project manager, written in Rust.
An extremely fast Python package and project manager, written in Rust. - astral-sh/uv
Forwarded from Записки kiriharu
В нашу жизнь проникает всё больше AI инструментов, поэтому делитесь в комментариях какими пользуетесь сами или о которых знаете.
Вот список из моих, юзаю практически каждый день:
- Очевидный ChatGPT
- Апскейлиг картиночек (старые мемы выглядят как новые!)
- Переводчик DeepL
- Поисковик Perplexity AI
- Нейросеть от Яндекса, которая кратко пересказывает содержимое статей и видео
- А вот тут мелкомягкие позволяют генерировать картиночки
- Вот тут я удаляю фон у фоточек
Вот список из моих, юзаю практически каждый день:
- Очевидный ChatGPT
- Апскейлиг картиночек (старые мемы выглядят как новые!)
- Переводчик DeepL
- Поисковик Perplexity AI
- Нейросеть от Яндекса, которая кратко пересказывает содержимое статей и видео
- А вот тут мелкомягкие позволяют генерировать картиночки
- Вот тут я удаляю фон у фоточек
Forwarded from DE
Для версий
Python 3.10
и выше.Деструктуризация с помощью образцов настолько выразительна, что иногда даже наличие единственной ветви
case
может сделать код проще. Гвидо ван Россум собрал коллекцию примеров match/case
, один из которых назвал «Очень глубокий итерируемый объект и сравнение типа с выделением».Это здорово, но меня больше поразил тот факт, что можно проверять типы и насколько выразительно это выглядит, ниже смотри пример.
def write_value(self, value):
if isinstance(value, str):
self.simple_element("string", value)
elif value is True:
self.simple_element("true")
elif value is False:
self.simple_element("false")
elif isinstance(value, int):
if -1 << 63 <= value < 1 << 64:
self.simple_element("integer", "%d" % value)
else:
raise OverflowError(value)
elif isinstance(value, float):
self.simple_element("real", repr(value))
elif isinstance(value, dict):
self.write_dict(value)
elif isinstance(value, (bytes, bytearray)):
self.write_bytes(value)
elif isinstance(value, datetime.datetime):
self.simple_element("date", _date_to_string(value))
elif isinstance(value, (tuple, list)):
self.write_array(value)
else:
raise TypeError("unsupported type: %s" % type(value))
match/case
:def write_value(self, value):#python #casematch
match value:
case str():
self.simple_element("string", value)
case True:
self.simple_element("true")
case False:
self.simple_element("false")
case int():
if -1 << 63 <= value < 1 << 64:
self.simple_element("integer", "%d" % value)
else:
raise OverflowError(value)
case float():
self.simple_element("real", repr(value))
case dict():
self.write_dict(value)
case bytes() | bytearray():
self.write_bytes(value)
case datetime.datetime():
self.simple_element("date", _date_to_string(value))
case tuple() | list():
self.write_array(value)
case _:
raise TypeError("unsupported type: %s" % type(value))
Please open Telegram to view this post
VIEW IN TELEGRAM
GitHub
patma/EXAMPLES.md at 3ece6444ef70122876fd9f0099eb9490a2d630df · gvanrossum/patma
Pattern Matching. Contribute to gvanrossum/patma development by creating an account on GitHub.
Forwarded from Denis Anikin
Привет!
https://www.youtube.com/watch?v=G3JKtB8tgvg это доклад с +- последними обновлениями
https://github.com/xfenix/bootstrap-macbook-for-python это +- похожие настройки
https://github.com/xfenix/spellcheck-microservice применение на живом проекте.
Не самый свежак, но я все еще не успел полностью выделить, там есть и от доклада обновления
https://www.youtube.com/watch?v=G3JKtB8tgvg это доклад с +- последними обновлениями
https://github.com/xfenix/bootstrap-macbook-for-python это +- похожие настройки
https://github.com/xfenix/spellcheck-microservice применение на живом проекте.
Не самый свежак, но я все еще не успел полностью выделить, там есть и от доклада обновления
YouTube
Moscow Python Meetup №86. Денис Аникин. Базовый кодовый стиль хорошего Python-бэкенда
Расскажу о том как эволюционировало представление о кодовом стиле у меня и у нашего внутрибанковского комьюнити и к чему мы пришли. Покажу свод правил, конфигурацию и опции настройки для того, чтобы относительно расслабленно систематически достигать очень…
Forwarded from Коробка с питоном
Зачем нужно делать кастомную базовую Pydantic модель?
Сейчас некоторые со мной не согласятся, но я часто рекомендую делать базовую
Наличие такой глобальной модели позволяет настраивать поведение всех моделей в приложении. Рассмотрю несколько кейсов, когда это может понадобится.
1) Контроль над входными данными.
Например, мы хотим округлять все поля которые называются
P.S.: В коментах подметили, что такой подход неявный, и я с этим согласен. Ничего не мешает для таких целей сделать ещё одну базовую модель (
2) Кастомый энкодер/декодер json.
Пакет
Это происходит из-за того, что операций по (дe)сериализации json в приложении может быть много, и смена библиотеки, в этом случае, дает ощутимый прирост к общей скорости.
В pydantic есть 2 опции в конфиге, которые позволяют изменять поведение энкодера и декодера. Выглядит это так:
Сейчас некоторые со мной не согласятся, но я часто рекомендую делать базовую
pydantic
модель и наследовать все модели от неё.Наличие такой глобальной модели позволяет настраивать поведение всех моделей в приложении. Рассмотрю несколько кейсов, когда это может понадобится.
1) Контроль над входными данными.
Например, мы хотим округлять все поля которые называются
price
до трех знаков после запятой. Сделать это можно так:class CustomBaseModel(BaseModel):Валидаторы дают возможность изменять входящие данные, но это стоит использовать с осторожностью.
@root_validator()
def round_price(cls, data: dict) -> dict:
prices = {k: round(v, 3) for k, v in data.items() if k == "price"}
return {**data, **prices}
P.S.: В коментах подметили, что такой подход неявный, и я с этим согласен. Ничего не мешает для таких целей сделать ещё одну базовую модель (
PriceRoundBaseModel
), наследуясь от нашей базовой СustomBaseModel
и использовать её там, где такое поведение необходимо.2) Кастомый энкодер/декодер json.
Пакет
json
из стандартной библиотеки очень медленный. При необходимости ускорить сервис этот пакет в первую очередь пытаются заменить на что-то побыстрее.Это происходит из-за того, что операций по (дe)сериализации json в приложении может быть много, и смена библиотеки, в этом случае, дает ощутимый прирост к общей скорости.
В pydantic есть 2 опции в конфиге, которые позволяют изменять поведение энкодера и декодера. Выглядит это так:
def orjson_dumps(v, *, default):#pydantic
# orjson.dumps возвращает байты, поэтому нам надо их декодить, чтобы соответствовать сигнатуре json.dumps
return orjson.dumps(v, default=default).decode()
class CustomBaseModel(BaseModel):
class Config:
json_loads = orjson.loads
json_dumps = orjson_dumps
Forwarded from Коробка с питоном
Как запускать синхронные функции в асинхронном роуте FastAPI?
Иногда так случается, что приходится использовать синхронный код в асинхронном роуте.
Если мы попытаемся вызвать синхронную функцию в асинхронном коде - наш event loop заблокируется и всё "зависнет" до тех пор, пока синхронный код не отработает.
Решений, как это сделать, на самом деле много. Самый простой вариант, который предоставляет FastAPI(а если быть точнее - Starlette, который использует anyio) - функция run_in_threadpool, которая запустит синхронный код в потоке:
А как бы вы решали/решаете такую проблему? Пишите в комментариях 😎 !
#fastapi #anyio
Иногда так случается, что приходится использовать синхронный код в асинхронном роуте.
Если мы попытаемся вызвать синхронную функцию в асинхронном коде - наш event loop заблокируется и всё "зависнет" до тех пор, пока синхронный код не отработает.
Решений, как это сделать, на самом деле много. Самый простой вариант, который предоставляет FastAPI
@app.get("/")Кстати, BackgroundTask использует тот же самый способ, только он не возвращает результат выполнения.
async def my_router():
result = await service.execute()
client = SyncClient()
return await run_in_threadpool(client.execute, data=result)
А как бы вы решали/решаете такую проблему? Пишите в комментариях 😎 !
#fastapi #anyio
Forwarded from Николай Хитров | Блог
Релиз
Себастьян закончил обновление
Чейнжлог совсем небольшой получился
https://fastapi.tiangolo.com/release-notes/#01000
p.s. в ближайшее время доберусь до чейнжлога pydantic v2 и сделаю обзорный пост
FastAPI
0.100.0🔥Себастьян закончил обновление
pydantic
-а. Теперь можно насладиться звуком ржавчины и приростом скорости при переходе на новую версию FastAPI
.Чейнжлог совсем небольшой получился
https://fastapi.tiangolo.com/release-notes/#01000
p.s. в ближайшее время доберусь до чейнжлога pydantic v2 и сделаю обзорный пост