π€― 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 ΡΡΡΠΎΠΊ
30Β ΠΈΡΠ»ΡΒ 202530Β ΠΈΡΠ»Β 2025
~1 ΠΌΠΈΠ½