Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² ΠΊΠΎΡ€Π·ΠΈΠ½ΡƒΠŸΠΎΠ·Π²ΠΎΠ½ΠΈΡ‚ΡŒ
Найти Π² Π”Π·Π΅Π½Π΅
pro Python

🀯 TinyIO: микроскопичСский event loop для Python (всСго 200 строк

🀯 TinyIO: микроскопичСский event loop для Python (всСго 200 строк!) Устали ΠΎΡ‚ слоТностСй asyncio? ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽ ΠΊΡ€ΠΎΡˆΠ΅Ρ‡Π½ΡƒΡŽ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Ρƒ β€” tinyio! 🌟 Π—Π°Ρ‡Π΅ΠΌ это Π½ΡƒΠΆΠ½ΠΎ? Автор создал tinyio ΠΈΠ·-Π·Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ с ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ ошибок Π² asyncio (Π½Π΅ ΠΎΠ½ ΠΎΠ΄ΠΈΠ½: 1, 2). Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° идСальна для простых сцСнариСв, Π³Π΄Π΅ Π½ΡƒΠΆΠ΅Π½ event loop Π±Π΅Π· лишнСй слоТности. ⚑️ Ѐишки: - БвСрхпростой API: всСго 4 Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ! - ЖСсткая ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ошибок: любая ошибка отмСняСт Π’Π‘Π• ΠΊΠΎΡ€ΡƒΡ‚ΠΈΠ½Ρ‹ - Π¦Π΅ΠΏΠΎΡ‡ΠΊΠΈ traceback: для ΡƒΠ΄ΠΎΠ±Π½ΠΎΠΉ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ зависимых ΠΊΠΎΡ€ΡƒΡ‚ΠΈΠ½ - Π Π°Π±ΠΎΡ‚Π° с ΠΏΠΎΡ‚ΠΎΠΊΠ°ΠΌΠΈ: Ρ‡Π΅Ρ€Π΅Π· run_in_thread - Π’Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ Π»ΡƒΠΏΡ‹: Π±Π΅Π· ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ "ΠΎΠ΄ΠΈΠ½ Π½Π° ΠΏΠΎΡ‚ΠΎΠΊ" πŸ’» ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π°: import tinyio def slow_add(x): yield tinyio.sleep(1) return x + 1 def main(): a, b = yield [slow_add(3), slow_add(4)] return a, b loop = tinyio.Loop() print(loop.run(main())) # (4, 5) πŸ”₯ ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΠΈ синтаксиса: - ВмСсто await β€” ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ yield - yield [coro1, coro2] β€” Π°Π½Π°Π»ΠΎΠ³ asyncio.gather - yield {coro1, coro2} β€” запуск Π±Π΅Π· оТидания βš–οΈ vs asyncio/trio: - ΠŸΠ»ΡŽΡΡ‹: ΠΏΡ€ΠΎΡ‰Π΅, прСдсказуС

🀯 TinyIO: микроскопичСский event loop для Python (всСго 200 строк!)

Устали ΠΎΡ‚ слоТностСй asyncio? ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽ ΠΊΡ€ΠΎΡˆΠ΅Ρ‡Π½ΡƒΡŽ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Ρƒ β€” tinyio!

🌟 Π—Π°Ρ‡Π΅ΠΌ это Π½ΡƒΠΆΠ½ΠΎ?

Автор создал tinyio ΠΈΠ·-Π·Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ с ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ ошибок Π² asyncio (Π½Π΅ ΠΎΠ½ ΠΎΠ΄ΠΈΠ½: 1, 2). Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° идСальна для простых сцСнариСв, Π³Π΄Π΅ Π½ΡƒΠΆΠ΅Π½ event loop Π±Π΅Π· лишнСй слоТности.

⚑️ Ѐишки:

- БвСрхпростой API: всСго 4 Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ!

- ЖСсткая ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ошибок: любая ошибка отмСняСт Π’Π‘Π• ΠΊΠΎΡ€ΡƒΡ‚ΠΈΠ½Ρ‹

- Π¦Π΅ΠΏΠΎΡ‡ΠΊΠΈ traceback: для ΡƒΠ΄ΠΎΠ±Π½ΠΎΠΉ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ зависимых ΠΊΠΎΡ€ΡƒΡ‚ΠΈΠ½

- Π Π°Π±ΠΎΡ‚Π° с ΠΏΠΎΡ‚ΠΎΠΊΠ°ΠΌΠΈ: Ρ‡Π΅Ρ€Π΅Π· run_in_thread

- Π’Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ Π»ΡƒΠΏΡ‹: Π±Π΅Π· ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ "ΠΎΠ΄ΠΈΠ½ Π½Π° ΠΏΠΎΡ‚ΠΎΠΊ"

πŸ’» ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π°:

import tinyio

def slow_add(x):

yield tinyio.sleep(1)

return x + 1

def main():

a, b = yield [slow_add(3), slow_add(4)]

return a, b

loop = tinyio.Loop()

print(loop.run(main())) # (4, 5)

πŸ”₯ ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΠΈ синтаксиса:

- ВмСсто await β€” ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ yield

- yield [coro1, coro2] β€” Π°Π½Π°Π»ΠΎΠ³ asyncio.gather

- yield {coro1, coro2} β€” запуск Π±Π΅Π· оТидания

βš–οΈ vs asyncio/trio:

- ΠŸΠ»ΡŽΡΡ‹: ΠΏΡ€ΠΎΡ‰Π΅, прСдсказуСмСС ошибки, лСгковСснСС

- ΠœΠΈΠ½ΡƒΡΡ‹: Π½Π΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для слоТных сцСнариСв

pip install tinyio

πŸ”— GitHub: patrick-kidger/tinyio