Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Новые (и не очень) библиотеки и фреймворки, о к...

Новые (и не очень) библиотеки и фреймворки, о которых вы могли не знать

Выступление для внутреннего митапа. Здесь я обзореваю разные новые интересные фреймворки и библиотеки. Такие как ruff или robyn

Denis Anikin

May 22, 2022
Tweet

More Decks by Denis Anikin

Other Decks in Programming

Transcript

  1. Robyn 7 ⭐ 1.5k github stars — Написан на RUST

    — Мультипоточный рантайм на rust
  2. Robyn 8 ⭐ 1.5k github stars — Написан на RUST

    — Мультипоточный рантайм на rust — Скейлинг на множество ядер
  3. Robyn 9 ⭐ 1.5k github stars — Написан на RUST

    — Мультипоточный рантайм на rust — Скейлинг на множество ядер — Hot reload, websockets, etc.
  4. 10 Код! from robyn import Robyn app = Robyn(__file__) @app.get("/")

    async def h(request): return "Hello, world!" app.start(port=5000)
  5. Ruff 17 ⭐ 2300 github stars — Линтер, который написан

    на RUST — Поддерживает pyproject.toml
  6. Ruff 18 ⭐ 2300 github stars — Линтер, который написан

    на RUST — Поддерживает pyproject.toml — Поддержка --watch
  7. Ruff 19 ⭐ 2300 github stars — Линтер, который написан

    на RUST — Поддерживает pyproject.toml — Поддержка --watch — Заменяет flake8 + pydocstyle + pyupgrade + autoflake
  8. Taichi 25 ⭐ 4300 github stars Это язык (?) для

    параллельного выполнения
  9. Taichi 26 ⭐ 4300 github stars import taichi as ti

    ti.init() @ti.func def is_prime(n: int): result = True for k in range(2, int(n ** 0.5) + 1): if n % k == 0: result = False break return result @ti.kernel def count_primes(n: int) -> int: count = 0 for k in range(2, n): if is_prime(k): count += 1 return count print(count_primes(1000000))
  10. 28 Бенчмарки До: --- 78498 real 0m2.235s user 0m2.235s sys

    0m0.000s После: --- 78498 real 0m0.363s user 0m0.546s sys 0m0.179s
  11. PyOxidizer 31 ⭐ 4300 github stars — Позволяет паковать и

    распостранять python пакеты…
  12. PyOxidizer 34 ⭐ 4300 github stars — Позволяет паковать и

    распостранять python пакеты… в виде одного исполняемого файла, со всеми зависимостями, которые статически слинкованы
  13. PyOxidizer 35 ⭐ 4300 github stars — Позволяет паковать и

    распостранять python пакеты… в виде одного исполняемого файла, со всеми зависимостями, которые статически слинкованы — Объединение скотчем кучи утилит на расте, которые позволяют все это делать
  14. PyOxidizer 36 ⭐ 4300 github stars — Позволяет паковать и

    распостранять python пакеты… в виде одного исполняемого файла, со всеми зависимостями, которые статически слинкованы — Объединение скотчем кучи утилит на расте, которые позволяют все это делать — Довольно запутанная документация с кучей нюансов (например, необходимо будет познакомиться с языком Starlark)
  15. Примеры 39 from hikaru.model.rel_1_16 import Pod, PodSpec, Container, ObjectMeta from

    hikaru import get_yaml x = Pod(apiVersion='v1', kind='Pod', metadata=ObjectMeta(name='hello-kiamol-3'), spec=PodSpec( containers=[Container(name='web', image='kiamol/ch02-hello-kiamol') ] ) ) print(get_yaml(x))
  16. Примеры 40 from hikaru.model.rel_1_16 import Pod, PodSpec, Container, ObjectMeta from

    hikaru import get_yaml x = Pod(apiVersion='v1', kind='Pod', metadata=ObjectMeta(name='hello-kiamol-3'), spec=PodSpec( containers=[Container(name='web', image='kiamol/ch02-hello-kiamol') ] ) ) print(get_yaml(x)) --- apiVersion: v1 kind: Pod metadata: name: hello-kiamol-3 spec: containers: - name: web image: kiamol/ch02-hello-kiamol
  17. 43 Представьте кейс: Вы хотите в k8s кластере динамически изнутри

    создавать новые pod’ы или даже целые service’ы
  18. Boltons 46 ⭐ 5900 github stars — 171 дополнительных функций

    — Атомарные сохранения файлов, LRU, LRI кеши, дополнения к functools, itertools, некоторые новые структуры данных и много чего ещё
  19. Grumpy, pycom 49 — Pycom — компилирует питон код через

    с-с++ — Grumpy — транспилирует питон код в GO
  20. Grumpy, pycom 50 — Pycom — компилирует питон код через

    с-с++ — Grumpy — транспилирует питон код в GO — Оба так себе работают J