PYTHONOMANIA
273 subscribers
195 photos
3 videos
1 file
616 links
Откройте для себя мир Python в PYTHONOMANIA!

Идеально подходит как для начинающих, так и для опытных разработчиков. Присоединяйтесь к нам, чтобы достичь совершенства в Python!

Сайт: https://pythonomania.github.io/
Download Telegram
📱Pyleak.

pyleak — это инструмент для обнаружения утечек asyncio задач, потоков и блокировок event loop в Python.

🔹pyleak помогает выявить:

🔘Утечки asyncio задач.

🔘Утечки потоков.

🔘Блокировки event loop, которые замедляют асинхронный код.

🔻Быстрый старт:
import asyncio
from pyleak import no_task_leaks, no_thread_leaks, no_event_loop_blocking

async def main():
async with no_task_leaks():
asyncio.create_task(asyncio.sleep(10)) # Эта задача будет обнаружена
await asyncio.sleep(0.1)

def sync_main():
with no_thread_leaks():
threading.Thread(target=lambda: time.sleep(10)).start() # Этот поток будет обнаружен

async def async_main():
with no_event_loop_blocking():
time.sleep(0.5) # Это блокирование будет обнаружено


🔻Особенности:

🔘Использование как контекст-менеджеров и декораторов.

🔘Вывод подробных стеков вызовов для утечек и блокировок.

🔘Фильтрация по именам задач и потоков.

🔘Настраиваемые действия при обнаружении: предупреждения, логгирование, отмена задач, выброс исключений.

🔘Интеграция с pytest для автоматического контроля утечек в тестах.

❓Почему pyleak:

🔘Помогает избежать утечек памяти и ресурсов.

🔘Позволяет выявить проблемы с производительностью и блокировками.

🔘Упрощает отладку сложного асинхронного кода.

#Python #AsyncIO #pyleak #Разработка #Тестирование #Программирование #PythonTools #AsyncTasks #Threads #EventLoop #Debugging #OpenSource

📱Ссылка на репозиторий:
https://github.com/deepankarm/pyleak
Please open Telegram to view this post
VIEW IN TELEGRAM
15⚡2
📱Rsloop.

rsloop — это альтернативный event loop для asyncio, написанный на Rust через PyO3.

Каждый rsloop.Loop держит выделенный Rust‑поток для координации цикла и I/O, при этом ваши Python‑корутины продолжают выполняться в том же потоке, откуда вы вызываете run_forever() / run_until_complete() (обычно main‑поток).

🔧Установка:
pip install rsloop
# или
uv add rsloop


🚀Быстрый старт:
import rsloop

async def main():
...

rsloop.run(main())


Или вручную:

import asyncio, rsloop

loop = rsloop.new_event_loop()
asyncio.set_event_loop(loop)
try:
loop.run_until_complete(...)
finally:
asyncio.set_event_loop(None)
loop.close()


🔹Основные особенности:

🔘Отдельный Rust runtime‑поток: координация цикла и I/O (на Linux — через compio с io_uring), Python‑колбэки и таски остаются на Python‑потоке.

🔘Полноценная реализация core‑поверхности asyncio: жизненный цикл лупа, задачи, future, run_in_executor, TCP/Unix сокеты, пайпы, сабпроцессы, сигналы, Windows‑пайпы и subprocess‑workflow.

🔘Fast Streams: импорт rsloop патчит asyncio.open_connection() и asyncio.start_server() для использования нативных быстрых стримов, когда запущен rsloop.Loop и не используется TLS; поведение можно отключить через RSLOOP_USE_FAST_STREAMS=0.

🔘Профилирование через Tracy: with rsloop.profile(): rsloop.run(main()) или ручное start_profiler()/stop_profiler() при сборке с фичей profiler.

🔘Производительность: в бенчмарках callbacks/tcp‑streams rsloop сопоставим или быстрее stdlib asyncio и близок к uvloop, иногда чуть медленнее по задачам, но выигрывает по p99‑латентности в реальных API‑нагрузках.

#python #asyncio #rust #rsloop #eventloop #io_uring #fastapi #uvloop #PyO3 #profiling

📱Ссылка на репозиторий:
https://github.com/RustedBytes/rsloop
Please open Telegram to view this post
VIEW IN TELEGRAM
1🔥4👍3