This media is not supported in your browser
VIEW IN TELEGRAM
🖥 Python задака
Напиши функцию, которая распарсит вложенные структуры (списки, кортежи, множества, генераторы) в одну последовательность, но не трогает строки и не падает из-за циклов.
Вот как сделать это без рекурсии, только через стек:
def flatten(obj):
stack = [obj]
seen = set()
while stack:
x = stack.pop()
if isinstance(x, (str, bytes)):
yield x
elif isinstance(x, (list, tuple, set)):
xid = id(x)
if xid in seen:
continue
seen.add(xid)
stack.extend(reversed(list(x)))
else:
yield x
# пример
data = [1, [2, 3], ("ab", [4, 5]), 6]
data.append(data) # создаём цикл
print(list(flatten(data)))
@Python_Community_ru
Напиши функцию, которая распарсит вложенные структуры (списки, кортежи, множества, генераторы) в одну последовательность, но не трогает строки и не падает из-за циклов.
Вот как сделать это без рекурсии, только через стек:
def flatten(obj):
stack = [obj]
seen = set()
while stack:
x = stack.pop()
if isinstance(x, (str, bytes)):
yield x
elif isinstance(x, (list, tuple, set)):
xid = id(x)
if xid in seen:
continue
seen.add(xid)
stack.extend(reversed(list(x)))
else:
yield x
# пример
data = [1, [2, 3], ("ab", [4, 5]), 6]
data.append(data) # создаём цикл
print(list(flatten(data)))
@Python_Community_ru
⚡️ Rust vs Python - как найти баланс между скоростью и простотой
JetBrains выпустили подробный разбор, где сравнивают Python и Rust без фанатизма — по скорости, синтаксису, памяти, экосистеме, конкурентности и даже по карьерным сценариям.
Главный вывод: Python нужен там, где важна скорость разработки и богатая экосистема, Rust, когда критична производительность, безопасность и масштабируемость. Всё чаще их используют вместе: Python для логики, Rust для самых горячих участков.
Ключевые моменты
Рост и популярность
- Python уверенно расширяет аудиторию: быстрый вход, огромная экосистема, удобство для ML, веба и автоматизации.
- Rust годами остаётся самым любимым языком разработчиков — благодаря безопасности памяти, скорости и надёжности.
Типы и управление памятью
- Python — динамическая типизация и удобный GC: легко начать, но ошибки всплывают в рантайме.
- Rust — строгая типизация, система владения и заимствований, отсутствие GC: ошибки ловятся на этапе компиляции, производительность предсказуема.
Производительность и конкурентность
- Python ограничен GIL: хорош для I/O, но CPU-параллелизм требует multiprocessing или расширений.
- Rust не имеет GIL — настоящая параллельность, «бесстрашная» конкурентность и контроль безопасности компилятором.
Экосистема
- Python — PyPI, Jupyter, зрелые фреймворки для DS/ML, веба, автоматизации.
- Rust — Cargo и crates.io, сильная база для CLI, системного софта, WebAssembly.
Комбинация Python + Rust
- Тренд — ускорять Python-проекты Rust-модулями.
- Библиотеки типа pydantic-core или Ruff показывают огромный прирост скорости.
- PyO3 делает интеграцию очень простой: Rust-код можно вызывать как обычный Python-модуль.
Карьера
- Python - широкие вакансии, огромный спрос в данных и ML.
- Rust - меньше позиций, но выше специализация в инфраструктуре, системной разработке и высоконагруженных сервисах.
Как выбирать
- Нужна скорость разработки и гибкость — Python.
- Нужна производительность и надёжность — Rust.
- Нужны и то, и другое — гибридный подход Python + Rust.
Подробный разбор - в блоге JetBrains:
https://blog.jetbrains.com/rust/2025/11/10/rust-vs-python-finding-the-right-balance-between-speed-and-simplicity/
#Rust #Python #Programming #Backend #Performance
@Python_Community_ru
JetBrains выпустили подробный разбор, где сравнивают Python и Rust без фанатизма — по скорости, синтаксису, памяти, экосистеме, конкурентности и даже по карьерным сценариям.
Главный вывод: Python нужен там, где важна скорость разработки и богатая экосистема, Rust, когда критична производительность, безопасность и масштабируемость. Всё чаще их используют вместе: Python для логики, Rust для самых горячих участков.
Ключевые моменты
Рост и популярность
- Python уверенно расширяет аудиторию: быстрый вход, огромная экосистема, удобство для ML, веба и автоматизации.
- Rust годами остаётся самым любимым языком разработчиков — благодаря безопасности памяти, скорости и надёжности.
Типы и управление памятью
- Python — динамическая типизация и удобный GC: легко начать, но ошибки всплывают в рантайме.
- Rust — строгая типизация, система владения и заимствований, отсутствие GC: ошибки ловятся на этапе компиляции, производительность предсказуема.
Производительность и конкурентность
- Python ограничен GIL: хорош для I/O, но CPU-параллелизм требует multiprocessing или расширений.
- Rust не имеет GIL — настоящая параллельность, «бесстрашная» конкурентность и контроль безопасности компилятором.
Экосистема
- Python — PyPI, Jupyter, зрелые фреймворки для DS/ML, веба, автоматизации.
- Rust — Cargo и crates.io, сильная база для CLI, системного софта, WebAssembly.
Комбинация Python + Rust
- Тренд — ускорять Python-проекты Rust-модулями.
- Библиотеки типа pydantic-core или Ruff показывают огромный прирост скорости.
- PyO3 делает интеграцию очень простой: Rust-код можно вызывать как обычный Python-модуль.
Карьера
- Python - широкие вакансии, огромный спрос в данных и ML.
- Rust - меньше позиций, но выше специализация в инфраструктуре, системной разработке и высоконагруженных сервисах.
Как выбирать
- Нужна скорость разработки и гибкость — Python.
- Нужна производительность и надёжность — Rust.
- Нужны и то, и другое — гибридный подход Python + Rust.
Подробный разбор - в блоге JetBrains:
https://blog.jetbrains.com/rust/2025/11/10/rust-vs-python-finding-the-right-balance-between-speed-and-simplicity/
#Rust #Python #Programming #Backend #Performance
@Python_Community_ru
The JetBrains Blog
Rust vs. Python: Finding the right balance between speed and simplicity | The RustRover Blog
Compare Rust and Python across performance, usability, tooling, and ecosystem. Learn which language is best for your next project.
👍2
This media is not supported in your browser
VIEW IN TELEGRAM
⚡️ Microsoft выпустила Visual Studio 2026 - крупнейшее обновление IDE за последние годы.
🔹 300+ новых функций и почти 5000 исправлений ошибок
🔹 Интеграция с GitHub Copilot стала глубже: теперь он помогает в анализе, рефакторинге и генерации кода
🔹 Редизайн интерфейса — 11 новых цветовых тем, улучшенная навигация и читаемость
🔹 Производительность выросла: количество зависаний интерфейса снизилось на 50 %
🔹 Более 4000 расширений от Visual Studio 2022 полностью совместимы с новой версией
Самое время обновиться - новая версия ощутимо быстрее и умнее.
https://visualstudio.microsoft.com/downloads/
@csharp_ci
@Python_Community_ru
🔹 300+ новых функций и почти 5000 исправлений ошибок
🔹 Интеграция с GitHub Copilot стала глубже: теперь он помогает в анализе, рефакторинге и генерации кода
🔹 Редизайн интерфейса — 11 новых цветовых тем, улучшенная навигация и читаемость
🔹 Производительность выросла: количество зависаний интерфейса снизилось на 50 %
🔹 Более 4000 расширений от Visual Studio 2022 полностью совместимы с новой версией
Самое время обновиться - новая версия ощутимо быстрее и умнее.
https://visualstudio.microsoft.com/downloads/
@csharp_ci
@Python_Community_ru
This media is not supported in your browser
VIEW IN TELEGRAM
🖥СОВЕТ ДЛЯ PYTHON ASYNCIO
В продвинутых asyncio-сетях главная редкая проблема — неконтролируемый рост буфера, когда клиент принимает данные слишком медленно. Python по умолчанию спокойно складывает мегабайты в память, пока сокет забит.
Решение - вручную ограничить размер буфера транспорта через `set write buffer limits и всегда ждать writer.drain. Тогда при медленном клиенте корутины просто «замрут» в drain(), а не раздуют памяиь.
Подписывайся, больше фишек каждый день !
пример контролируемой по памяти передачи данных
import asyncio
async def handle(reader, writer):
writer.transport.set_write_buffer_limits(high=500_000, low=200_000)
while True:
writer.write(b"x" * 65536)
await writer.drain() # остановит корутину, если клиент не успевает
async def main():
server = await asyncio.start_server(handle, "0.0.0.0", 8888)
async with server:
await server.serve_forever()
asyncio.run(main())
@Python_Community_ru
В продвинутых asyncio-сетях главная редкая проблема — неконтролируемый рост буфера, когда клиент принимает данные слишком медленно. Python по умолчанию спокойно складывает мегабайты в память, пока сокет забит.
Решение - вручную ограничить размер буфера транспорта через `set write buffer limits и всегда ждать writer.drain. Тогда при медленном клиенте корутины просто «замрут» в drain(), а не раздуют памяиь.
Подписывайся, больше фишек каждый день !
пример контролируемой по памяти передачи данных
import asyncio
async def handle(reader, writer):
writer.transport.set_write_buffer_limits(high=500_000, low=200_000)
while True:
writer.write(b"x" * 65536)
await writer.drain() # остановит корутину, если клиент не успевает
async def main():
server = await asyncio.start_server(handle, "0.0.0.0", 8888)
async with server:
await server.serve_forever()
asyncio.run(main())
@Python_Community_ru
Кризис в диджитал
Все говорят о кризисе: бюджеты режут, рынок сжимается, конкуренция растёт. В digital это ощущается сильнее всего – давление на эффективность и сроки стало нормой. Но паника ничего не меняет.
Мы видим ситуацию иначе. Когда рынок штормит, выигрывают не те, у кого больше ресурсов, а те, кто умеет быстро перестраиваться, усиливать процессы и работать точнее.
Мы знаем, как проходить спад: что оптимизировать, что автоматизировать, какие метрики реально важны, что помогает удерживать клиентов, а что – только создаёт иллюзию контроля.
В итоге несколько авторов digital-каналов решили объединиться и собрать всё полезное в одну папку — «Документы для тех, кто в digital»
🔴 Там 30 файлов, которые помогают выстроить управление, аналитику и внутренние процессы:
– Мотивация сотрудников в IT,
– Контроль сроков диджитал-проекта,
– Шаблон CSI,
– Фреймворк для проведения исследований через ИИ,
– Как создать продающее КП.
📂 Ссылка на папку: https://t.iss.one/addlist/mUVeZHwtrzc0NWYy
А чтобы добавить немного азарта — среди подписавшихся разыграют:
🥇 iPhone Air;
🥈 Яндекс Станцию Лайт 2;
🥉 HUAWEI Freebuds 5.
Как участвовать:
1. Подпишись на папку: https://t.iss.one/addlist/mUVeZHwtrzc0NWYy
2. Подтверди участие в боте
🗓 Итоги — 25 ноября.
Все говорят о кризисе: бюджеты режут, рынок сжимается, конкуренция растёт. В digital это ощущается сильнее всего – давление на эффективность и сроки стало нормой. Но паника ничего не меняет.
Мы видим ситуацию иначе. Когда рынок штормит, выигрывают не те, у кого больше ресурсов, а те, кто умеет быстро перестраиваться, усиливать процессы и работать точнее.
Мы знаем, как проходить спад: что оптимизировать, что автоматизировать, какие метрики реально важны, что помогает удерживать клиентов, а что – только создаёт иллюзию контроля.
В итоге несколько авторов digital-каналов решили объединиться и собрать всё полезное в одну папку — «Документы для тех, кто в digital»
– Мотивация сотрудников в IT,
– Контроль сроков диджитал-проекта,
– Шаблон CSI,
– Фреймворк для проведения исследований через ИИ,
– Как создать продающее КП.
📂 Ссылка на папку: https://t.iss.one/addlist/mUVeZHwtrzc0NWYy
А чтобы добавить немного азарта — среди подписавшихся разыграют:
🥇 iPhone Air;
🥈 Яндекс Станцию Лайт 2;
🥉 HUAWEI Freebuds 5.
Как участвовать:
1. Подпишись на папку: https://t.iss.one/addlist/mUVeZHwtrzc0NWYy
2. Подтверди участие в боте
🗓 Итоги — 25 ноября.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1🔥1
💡 Qwen-Image-Edit получил полезное обновление.
Лаборатория eigen ai labs выпустила новую LoRA под названием Eigen-Banana. Она ориентирована на быстрые и точные правки изображений по текстовым подсказкам. Работает на высоких скоростях и хорошо понимает как английские, так и китайские запросы.
Важно: лицензия разрешает только некоммерческое использование.
Ссылка: https://huggingface.co/eigen-ai-labs/eigen-banana-qwen-image-edit
@Python_Community_ru
Лаборатория eigen ai labs выпустила новую LoRA под названием Eigen-Banana. Она ориентирована на быстрые и точные правки изображений по текстовым подсказкам. Работает на высоких скоростях и хорошо понимает как английские, так и китайские запросы.
Важно: лицензия разрешает только некоммерческое использование.
Ссылка: https://huggingface.co/eigen-ai-labs/eigen-banana-qwen-image-edit
@Python_Community_ru
👍2
This media is not supported in your browser
VIEW IN TELEGRAM
⚡️ ПРИЁМ ДЛЯ ГЛАДКОЙ ПЕРЕДАЧИ ДАННЫХ В ASYNCIO
В сетевом Python можно «мягко» ограничивать скорость передачи данных без троттлинга на уровне сокета.
Приём - отправлять данные кусками и вставлять короткий await asyncio sleep после каждого drain(): это отдаёт управление циклу, даёт шанс другим корутинам и предотвращает монополизацию CPU.
Полезно в высоконагруженных стримерах.
простой «мягкий» троттлинг передачи данных
import asyncio
CHUNK = 32_000
async def send_smooth(writer, data: bytes):
for i in range(0, len(data), CHUNK):
writer.write(data[i:i+CHUNK])
await writer.drain()
await asyncio.sleep(0) # отдаём управление циклу
async def handle(reader, writer):
payload = b"x" * 5_000_000
await send_smooth(writer, payload)
writer.close()
await writer.wait_closed()
async def main():
srv = await asyncio.start_server(handle, "0.0.0.0", 8888)
async with srv:
await srv.serve_forever()
asyncio.run(main())
@Python_Community_ru
В сетевом Python можно «мягко» ограничивать скорость передачи данных без троттлинга на уровне сокета.
Приём - отправлять данные кусками и вставлять короткий await asyncio sleep после каждого drain(): это отдаёт управление циклу, даёт шанс другим корутинам и предотвращает монополизацию CPU.
Полезно в высоконагруженных стримерах.
простой «мягкий» троттлинг передачи данных
import asyncio
CHUNK = 32_000
async def send_smooth(writer, data: bytes):
for i in range(0, len(data), CHUNK):
writer.write(data[i:i+CHUNK])
await writer.drain()
await asyncio.sleep(0) # отдаём управление циклу
async def handle(reader, writer):
payload = b"x" * 5_000_000
await send_smooth(writer, payload)
writer.close()
await writer.wait_closed()
async def main():
srv = await asyncio.start_server(handle, "0.0.0.0", 8888)
async with srv:
await srv.serve_forever()
asyncio.run(main())
@Python_Community_ru
👍1
⚡ Microsoft выкатили **amplifier** - новую экспериментальную платформу для сборки AI-инструментов без лишнего кода.
Что это:
- способ описать экспертный процесс в виде шагов и автоматически превратить его в работающий инструмент;
- возможность комбинировать такие инструменты между собой, создавая цепочки автоматизации;
- платформа для исследований, поэтому всё ещё активно меняется.
Чем хорош инструмент:
- позволяет быстро превращать повторяющиеся задачи в автономные AI-процессы;
- помогает строить «агентов» с ролями — исследователь, критик, исполнитель;
- снижает порог входа: достаточно описать логику, а не писать всю реализацию.
Это пока исследовательский проект, но потенциал — большой.
👉 Репозиторий: https://github.com/microsoft/amplifier
@Python_Community_ru
Что это:
- способ описать экспертный процесс в виде шагов и автоматически превратить его в работающий инструмент;
- возможность комбинировать такие инструменты между собой, создавая цепочки автоматизации;
- платформа для исследований, поэтому всё ещё активно меняется.
Чем хорош инструмент:
- позволяет быстро превращать повторяющиеся задачи в автономные AI-процессы;
- помогает строить «агентов» с ролями — исследователь, критик, исполнитель;
- снижает порог входа: достаточно описать логику, а не писать всю реализацию.
Это пока исследовательский проект, но потенциал — большой.
👉 Репозиторий: https://github.com/microsoft/amplifier
@Python_Community_ru
🔥2👍1