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. Денис Аникин
    https://xfenix.ru/
    Новые (и не очень)
    библиотеки и
    фреймворки, о которых
    вы могли не знать

    View Slide

  2. Robyn

    View Slide

  3. View Slide

  4. Robyn
    4
    ⭐ 1500 github stars
    — Написан на RUST

    View Slide

  5. View Slide

  6. View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  10. 10
    Код!
    from robyn import Robyn
    app = Robyn(__file__)
    @app.get("/")
    async def h(request):
    return "Hello, world!"
    app.start(port=5000)

    View Slide

  11. View Slide

  12. Бенчмарки RPS
    12
    https://sansyrox.github.io/robyn/#/comparison
    Django: 1x
    FastAPI: 3.27x
    Robyn: 7.37x,
    8.66x

    View Slide

  13. Ruff

    View Slide

  14. Ruff
    14
    ⭐ 2300 github stars
    — Линтер, который написан на RUST

    View Slide

  15. View Slide

  16. View Slide

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

    View Slide

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

    View Slide

  19. Ruff
    19
    ⭐ 2300 github stars
    — Линтер, который написан на RUST
    — Поддерживает pyproject.toml
    — Поддержка --watch
    — Заменяет flake8 + pydocstyle + pyupgrade + autoflake

    View Slide

  20. Frozenlist

    View Slide

  21. Frozenlist
    21
    ⭐ 47 github stars J
    Динамически переключаемый list, который можно «фризить»

    View Slide

  22. View Slide

  23. Frozenlist
    23
    ⭐ 47 github stars J

    View Slide

  24. Taichi

    View Slide

  25. Taichi
    25
    ⭐ 4300 github stars
    Это язык (?) для параллельного выполнения

    View Slide

  26. 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))

    View Slide

  27. 27
    Бенчмарки
    До:
    ---
    78498
    real 0m2.235s
    user 0m2.235s
    sys 0m0.000s

    View Slide

  28. 28
    Бенчмарки
    До:
    ---
    78498
    real 0m2.235s
    user 0m2.235s
    sys 0m0.000s
    После:
    ---
    78498
    real 0m0.363s
    user 0m0.546s
    sys 0m0.179s

    View Slide

  29. PyOxidizer

    View Slide

  30. View Slide

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

    View Slide

  32. View Slide

  33. View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  37. Hikaru

    View Slide

  38. Boltons
    38
    ⭐ 60 github stars
    Позволяет работать с k8s манифестами

    View Slide

  39. Примеры
    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))

    View Slide

  40. Примеры
    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

    View Slide

  41. View Slide

  42. Есть же helm!

    View Slide

  43. 43
    Представьте кейс:
    Вы хотите в k8s кластере динамически изнутри создавать
    новые pod’ы или даже целые service’ы

    View Slide

  44. Boltons

    View Slide

  45. Boltons
    45
    ⭐ 5900 github stars
    — 171 дополнительных функций

    View Slide

  46. Boltons
    46
    ⭐ 5900 github stars
    — 171 дополнительных функций
    — Атомарные сохранения файлов, LRU, LRI кеши, дополнения
    к functools, itertools, некоторые новые структуры данных и много
    чего ещё

    View Slide

  47. Grumpy, pycom

    View Slide

  48. Grumpy, pycom
    48
    — Pycom — компилирует питон код через с-с++

    View Slide

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

    View Slide

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

    View Slide

  51. /
    Денис Аникин
    https://xfenix.ru/
    Спасибо!

    View Slide