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

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

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

TonIO - это многопоточный асинхронный рантайм для free-threaded Python (сборки без GIL), написанный на Rust поверх крейта mio и вдохновленный архитектурой Tokio, Trio и TinyIO.

В отличие от стандартного asyncio, чей цикл событий (event loop) жестко привязан к одному системному потоку, TonIO спроектирован под реалии современного многопоточного Python 3.13+ (PEP 703): рантайм автоматически распределяет и исполняет корутины параллельно на нескольких ядрах процессора.

🔹Ключевые особенности:

🐱Два стиля синтаксиса (Coloring vs Uncolored):

🔘Модуль tonio.colored предоставляет привычный синтаксис async / await.

🔘Базовый модуль tonio позволяет писать асинхронный код через обычные генераторы и yield, полностью избавляя от проблемы «цветных функций».

✔️Rust-ядро на mio: Высокопроизводительный неблокирующий системный I/O (epoll, kqueue, IOCP) и планировщик задач прямо под капотом Python.

✔️Структурная конкурентность (Structured Concurrency):

🔘tonio.scope() гарантирует корректную отмену и сбор всех дочерних корутин при выходе из контекста или возникновении исключений.

🔘tonio.select() для конкурентных гонок задач (отменяет оставшиеся корутины при первом завершении).

✔️Синхронизация и MPMC-каналы:

🔘События Event и комбинируемые ожидатели Waiter через операторы пересечения и объединения (w1 & w2, w1 | w2).

🔘Lock, Semaphore, Barrier и каналы передачи сообщений (bounded и unbounded) с неблокирующими методами send_nowait / receive_nowait.

✔️Сетевой стек и системные примитивы:

🔘Высокоуровневые стримы для TCP, Unix Domain Sockets и TLS (open_tcp_stream, serve_tcp).

🔘Низкоуровневый модуль tonio.io для подключения любых файловых дескрипторов ОС к системному поллеру.

🔘Асинхронная файловая система tonio.fs и управление подпроцессами (run_process, open_process).

✔️Интеграция с Pytest: Поставляется с готовым плагином, маркером @pytest.mark.tonio и авто-режимом для тестирования асинхронного кода.

💻Пример использования:

С классическим синтаксисом async / await:

import tonio.colored as tonio

async def fetch_data(task_id: int):
await tonio.sleep(0.5)
return f"Результат {task_id}"

@tonio.main
async def main():
# Параллельный запуск задач в пуле потоков рантайма
parallel = tonio.spawn(
fetch_data(1),
fetch_data(2)
)

extra = await fetch_data(3)
res1, res2 = await parallel

print([res1, res2, extra])

main()


С синтаксисом на чистом
yield (без async/await):

import tonio

def fetch_data(task_id: int):
yield tonio.sleep(0.5)
return f"Результат {task_id}"

@tonio.main
def main():
parallel = tonio.spawn(fetch_data(1), fetch_data(2))
extra = yield fetch_data(3)
res1, res2 = yield parallel
print([res1, res2, extra])

main()


⚠️ Важно: Проект находится в активной разработке (WIP), не совместим напрямую с объектами asyncio (для интеграций доступен проект-патчер TonIO-Monkey) и рассчитан исключительно на free-threaded Python без GIL.

✅Лицензия: BSD 3-Clause.

#Python #Rust #TonIO #Async #NoGIL #FreeThreaded #Tokio #Concurrency #Multithreading #Performance #DevTools #OpenSource

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