«Это же Python.. что ни сделай - всё в итоге аллоцируется».
Насколько это правда?
Разработчик внёс правку в CPython, чтобы логировались все аллокации объектов int. Затем запустил простой цикл сложения чисел 100 тысяч раз. В терминал прилетело 101006 сообщений.
Почему так много?
Во внутренних механизмах CPython каждое целое число представлено объектом PyLongObject в куче. И маленькие тоже.
Большинство VM используют tagged pointers, чтобы обойтись без лишних аллокаций. Даже Smalltalk в 80-х уже умел это. Python же идёт по тяжёлому пути: каждая аллокация тормозит работу, а редкий случай больших чисел ухудшает производительность самого частого кейса — простых интов.
Допущение: в тесте использовался print, который тоже может порождать новые ints. Разработчик убрал print. Количество аллокаций резко снизилось.
Куда делись остальные ~100k?
Смотрим функцию сложения ints. Если оба операнда меньше 2^30, их значения просто достаются и складываются напрямую. Тип stwodigits так и называется потому, что PyLongObject хранит число в основании 2^30 - каждый элемент массива хранит такой разряд.
Дальше вызывается _PyLong_FromSTwoDigits. В зависимости от величины числа - три пути.
Для маленьких чисел есть оптимизация: готовый статический массив маленьких PyLongObject, без аллокаций в куче. Просто возвращается указатель.
Для средних значений подключается другая функция. И вот что важно:
long_alloc тут не используется
Сначала пытается взять объект из freelist
Если нет свободных = создаёт новый
Freelist - типичная техника для переиспользования освобождённых объектов, чтобы лишний раз не трогать аллокатор.
В long_dealloc объект аккуратно возвращается в этот список.
Разработчик перенёс отладочный вывод в _PyLong_FromMedium: стало видно, что приличная часть объектов переиспользуется.
Но даже так накладные расходы огромные. На уровне процессора сложение двух int - одна инструкция ADD, исполняемая за один такт. В Python же вокруг неё целый аттракцион.
Плюс заметно отсутствие довольно старых оптимизаций, известных индустрии десятки лет.
Хороший пример того, что возможность контролировать аллокации позволяет строить специализированные аллокаторы и избавляться от мусора по пути.
И именно такие вещи делают языки вроде Zig привлекательными для разработчиков.
Подробнее с кодом: тык
Please open Telegram to view this post
VIEW IN TELEGRAM
😁6🔥1🤔1
This media is not supported in your browser
VIEW IN TELEGRAM
Нашли утилиту, которая заставляет клавиатуру звучать как настоящая печатная машинка
А еще на нажатие можно установить кряканье, барабаны, молнию и свои звуковые эффекты. Это бесплатно и совместимо с Linux, Windows и macOS.
варианты пресетов:
• классическая машинка
• альтернативная, попроще
• рандомные ноты, как музыкальная шкатулка
• кря-кря🦆
• ту-дум, тсс, чя!🥁
https://github.com/orhun/daktilo
👉 @PythonPortal
А еще на нажатие можно установить кряканье, барабаны, молнию и свои звуковые эффекты. Это бесплатно и совместимо с Linux, Windows и macOS.
варианты пресетов:
• классическая машинка
• альтернативная, попроще
• рандомные ноты, как музыкальная шкатулка
• кря-кря
• ту-дум, тсс, чя!
https://github.com/orhun/daktilo
Please open Telegram to view this post
VIEW IN TELEGRAM
😁24🤝4👀2❤1
В сеть утек весь исходный код веб-версии Apple App Store. Они забыли выключить Source Maps, поэтому все читается без проблем, включая комментарии:
https://github.com/rxliuli/apps.apple.com
👉 @PythonPortal
https://github.com/rxliuli/apps.apple.com
Please open Telegram to view this post
VIEW IN TELEGRAM
👀31😁12❤6
Media is too big
VIEW IN TELEGRAM
Когда сидишь в терминале по уши в работе, все летит как надо. И тут вдруг надо открыть PDF или картинку. Хоп. Вылезаешь из терминала, ищешь нужное приложение, теряешь фокус. Бесит. 🚪
А я вот недавно нашел Mcat. Маленькая, опенсорсная утилита, которая умеет показывать и даже конвертировать кучу форматов прямо в консоли. PDF, Word, PPT и прочие документы. Картинки тоже отображает. Видео, между прочим, крутит.
Короче, чтобы не рвать поток и не щелкать окнами туда-сюда:
GitHub: http://github.com/Skardyy/mcat
👉 @PythonPortal
А я вот недавно нашел Mcat. Маленькая, опенсорсная утилита, которая умеет показывать и даже конвертировать кучу форматов прямо в консоли. PDF, Word, PPT и прочие документы. Картинки тоже отображает. Видео, между прочим, крутит.
Короче, чтобы не рвать поток и не щелкать окнами туда-сюда:
GitHub: http://github.com/Skardyy/mcat
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17❤3🤝2
Генератор в Python это функция, которая возвращает не одно значение, а объект-итератор.
Генераторы отличаются от обычных функций тем, что вместо return используют yield.
Следующее значение из итератора достается вызовом next(generator).
Пример :
👉 @PythonPortal
Генераторы отличаются от обычных функций тем, что вместо return используют yield.
Следующее значение из итератора достается вызовом next(generator).
Пример :
def multiple_generator(x, n):
for i in range(1, n + 1):
yield x * i
multiples_of_5 = multiple_generator(5, 3)
print(next(multiples_of_5)) # 5
print(next(multiples_of_5)) # 10
print(next(multiples_of_5)) # 15
Please open Telegram to view this post
VIEW IN TELEGRAM
👍23❤12
Отличный гайд по Pytest для новичков
На Хабре вышел простой и толковый разбор Pytest, без воды, но с кучей пользы. Фикстуры, метки, примеры и лайфхаки.
После него реально хочется взять и написать свой первый тест💪
👉 @PythonPortal
На Хабре вышел простой и толковый разбор Pytest, без воды, но с кучей пользы. Фикстуры, метки, примеры и лайфхаки.
После него реально хочется взять и написать свой первый тест
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14❤5
Please open Telegram to view this post
VIEW IN TELEGRAM
😁72😢10🤣6🔥4❤3
Люблю интерактивное обучение программированию 🥺
Поэтому не могу не поделиться этим сайтом: coddy.tech/journeys
Проходишь пошаговые «пути» с заданиями, тестами и практикой. Формат геймифицирован, удобно для новичков: Python, JS, C++, SQL и другие языки.
👉 @PythonPortal
Поэтому не могу не поделиться этим сайтом: coddy.tech/journeys
Проходишь пошаговые «пути» с заданиями, тестами и практикой. Формат геймифицирован, удобно для новичков: Python, JS, C++, SQL и другие языки.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤22👍2
Совет по Python:
Используй класс Path из модуля pathlib, чтобы работать с путями к файлам кроссплатформенно.
👉 @PythonPortal
Используй класс Path из модуля pathlib, чтобы работать с путями к файлам кроссплатформенно.
from pathlib import Path
p = Path('/usr/local/bin')
Please open Telegram to view this post
VIEW IN TELEGRAM
👍25👀9❤7
This media is not supported in your browser
VIEW IN TELEGRAM
Minecraft теперь можно запустить ИИ-агентов, которыми можно управлять промптами.
Познакомьтесь со Steve — это как Cursor, но для Minecraft.
ИИ-агенты умеют добывать ресурсы, строить и охотиться по команде, а ещё работать вместе.
Похоже, теперь искусственный интеллект играет с нами, а не наоборот.
👉 @PythonPortal
Познакомьтесь со Steve — это как Cursor, но для Minecraft.
ИИ-агенты умеют добывать ресурсы, строить и охотиться по команде, а ещё работать вместе.
Похоже, теперь искусственный интеллект играет с нами, а не наоборот.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤36👀7🤯4🏆3
Шпаргалка SQL → Python → Excel, которая помогает быстро понять, как одинаковые операции выполняются в трёх разных инструментах.
👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍45❤7
В Python 3.14 добавили нативные операции для max-кучи в модуле heapq, теперь можно работать и с max-heap без костылей.
👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥17❤5👍4😁1🤔1
Media is too big
VIEW IN TELEGRAM
Этот чувак буквально объясняет, как с нуля собрать алгоритмический хедж-фонд меньше чем за 6 минут.
Это безумие:
Он использует четыре библиотеки:
• QSConnect - создание базы данных для квант-исследований
• QSResearch - исследование и запуск стратегий машинного обучения
• QSWorkflow - автоматизация всего пайплайна от начала до конца
• Omega - исполнение сделок через Python
👉 @PythonPortal
Это безумие:
Он использует четыре библиотеки:
• QSConnect - создание базы данных для квант-исследований
• QSResearch - исследование и запуск стратегий машинного обучения
• QSWorkflow - автоматизация всего пайплайна от начала до конца
• Omega - исполнение сделок через Python
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14❤12🤝4🔥3🤣3🤔1
Стохастические и детерминистские методы сэмплинга в диффузионных моделях дают заметно разные траектории, но в итоге оба приходят к одной цели.
Diffusion Explorer позволяет наглядно сравнивать разные методы сэмплинга и цели обучения диффузионных моделей, создавая визуализации типа той, что на 2 видео
Кроме того, можно, например, обучить модель на своём датасете и наблюдать, как она постепенно сходится к выборке из правильного распределения.
Посмотрите этот репозиторий GitHub.
👉 @PythonPortal
Diffusion Explorer позволяет наглядно сравнивать разные методы сэмплинга и цели обучения диффузионных моделей, создавая визуализации типа той, что на 2 видео
Кроме того, можно, например, обучить модель на своём датасете и наблюдать, как она постепенно сходится к выборке из правильного распределения.
Посмотрите этот репозиторий GitHub.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤15👀6👍5🔥1🤝1
27 ноября Яндекс проведет Pytup — митап для Python-разработчиков и ML-инженеров
📍 Екатеринбург
📅 27 ноября в 17.00 (по Екб)
Участников ждут технические доклады, дискуссионные столы, нетворкинг с экспертами, а также соревнования по игре в змейку и гонки на роверах.
В программе выступлений:
— Егор Гордовский, технический менеджер проектов Yandex Cloud, расскажет о дата-центрах: из каких составляющих они состоят и как технологии, электричество, воздух, серверы и люди работают вместе, чтобы код превратился в работающий сервис.
— Арсений Саблин, разработчик системы контроля качества умных устройств на производстве Яндекс Алисы, выступит с докладом о том, как используется Python при тестировании станций с Алисой.
— Никита Улько, техлид VK Tech, разберет чистую архитектуру с практической точки зрения: за что ее ценят и как применять ее принципы, фокусируясь на решении конкретных проблем.
Для тех, кто не сможет посетить митап в Екатеринбурге, будет доступна онлайн-трансляция докладной части.
👉 Регистрация и программа
📍 Екатеринбург
📅 27 ноября в 17.00 (по Екб)
Участников ждут технические доклады, дискуссионные столы, нетворкинг с экспертами, а также соревнования по игре в змейку и гонки на роверах.
В программе выступлений:
— Егор Гордовский, технический менеджер проектов Yandex Cloud, расскажет о дата-центрах: из каких составляющих они состоят и как технологии, электричество, воздух, серверы и люди работают вместе, чтобы код превратился в работающий сервис.
— Арсений Саблин, разработчик системы контроля качества умных устройств на производстве Яндекс Алисы, выступит с докладом о том, как используется Python при тестировании станций с Алисой.
— Никита Улько, техлид VK Tech, разберет чистую архитектуру с практической точки зрения: за что ее ценят и как применять ее принципы, фокусируясь на решении конкретных проблем.
Для тех, кто не сможет посетить митап в Екатеринбурге, будет доступна онлайн-трансляция докладной части.
👉 Регистрация и программа
❤6🌭1
This media is not supported in your browser
VIEW IN TELEGRAM
Принес крутейший репо для тех, кто любит учиться на реальных примерах. Тут собрано более сотни опенсорсных клонов популярных сервисов: от Airbnb до YouTube
Каждый проект снабжен ссылками на исходный код, демками, описанием стека и количеством звезд на GitHub. А у некоторых даже есть туторы по созданию
Забирайте на GitHub🍯
👉 @PythonPortal
Каждый проект снабжен ссылками на исходный код, демками, описанием стека и количеством звезд на GitHub. А у некоторых даже есть туторы по созданию
Забирайте на GitHub
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12❤8