Все самое полезное для питониста в одном канале.
Учиться у нас: clc.to/6e5Csg
Для обратной связи: @proglibrary_feeedback_bot
По рекламе: @tproger_sales_bot
РКН: https://gosuslugi.ru/snet/67b885cbd501cf3b2cdb5b36
Post #7038
3.03K

✔️ 2 минималистичные библиотеки, которые делают асинхронность в Python проще
В Python всё чаще приходится выбирать между sync и async реализациями (а иногда ещё и писать обе).
Если вам надоело дублировать код или разбираться в тёмных углах
🙂 transfunctions — одна функция → три разных поведения
С помощью шаблона вы пишете *один* фрагмент кода, а библиотека генерирует:
— обычную функцию (
— async-версию (
— генератор (
Пример:
Хотите всё автоматически — используйте
🙂 tinyio — tiny event loop (≈300 строк) вместо asyncio
Если вы когда-нибудь думали «asyncio слишком сложный для такой простой задачи» — эта библиотека для вас.
tinyio — микроскопический event loop с безопасной обработкой ошибок и простейшим API:
— вместо
— если ошибка случается в одной корутине — автоматически отменяются все, чтобы не было скрытого «зомби»-кода
— нет
🙂 Установка
🐸 Библиотека питониста
#буст
В Python всё чаще приходится выбирать между sync и async реализациями (а иногда ещё и писать обе).
Если вам надоело дублировать код или разбираться в тёмных углах
asyncio, вот две очень лёгкие и практичные альтернативы.🙂 transfunctions — одна функция → три разных поведения
С помощью шаблона вы пишете *один* фрагмент кода, а библиотека генерирует:
— обычную функцию (
func())— async-версию (
await func())— генератор (
for _ in func():)Пример:
@transfunction
def template():
print('so, ', end='')
with sync_context:
print("it's just usual function!")
with async_context:
print("it's an async function!")
with generator_context:
print("it's a generator function!")
yield
Хотите всё автоматически — используйте
@superfunction, и функция сама поймёт, как её вызвали:~my_superfunction() # обычный вызов
await my_superfunction() # async-исполнение
for x in my_superfunction(): # генератор
🙂 tinyio — tiny event loop (≈300 строк) вместо asyncio
Если вы когда-нибудь думали «asyncio слишком сложный для такой простой задачи» — эта библиотека для вас.
tinyio — микроскопический event loop с безопасной обработкой ошибок и простейшим API:
def slow_add_one(x):
yield tinyio.sleep(1)
return x + 1
def foo():
a, b = yield [slow_add_one(3), slow_add_one(4)]
return a, b
loop = tinyio.Loop()
print(loop.run(foo())) # → (4, 5)
— вместо
await используется yield— если ошибка случается в одной корутине — автоматически отменяются все, чтобы не было скрытого «зомби»-кода
— нет
Task, Future, TaskGroup — только Loop, sleep, run_in_thread🙂 Установка
pip install transfunctions
pip install tinyio
🐸 Библиотека питониста
#буст
- ❤ 18
- 👍 6
- 🌚 1














