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

Ускоряем производительность Python-клиента Redis, используя Golang

Ускоряем производительность Python-клиента Redis, используя Golang

Юрий Букаткин (Программный регион, Руководитель группы разработки) @ Moscow Python Meetup 58

"Тема доклада такая же про ускорение python клиента для redis. Но с использованием расширения написанным на golang. Ну и сравнение в итоге что получилось python клиент, cython клиент и клиент python с использованием golang. Вот ссылка как пример: https://blog.filippo.io/building-python-modules-with-go-1-5/".

Видео: http://www.moscowpython.ru/meetup/58/speed-up-python/

Moscow Python Meetup

July 20, 2018
Tweet

More Decks by Moscow Python Meetup

Other Decks in Programming

Transcript

  1. Цель  Быстрый Python-клиент для Redis  Pipeline, Pooling, многопоточность

     Простое использование в Python  Читаемость кода Ускоряем производительность Python-клиента Redis, используя Golang
  2. Тестирование Ускоряем производительность Python-клиента Redis, используя Golang  Redis-py https://github.com/andymccurdy/redis-py

     Credis https://github.com/yihuang/credis  Python + Go (raw realization)  Python + Go (https://github.com/go-redis/redis)
  3. Benchmarks hashmap size Ускоряем производительность Python-клиента Redis, используя Golang 100

    500 1000 5000 10000 50000 100000 0 0.5 1 1.5 2 2.5 3 3.5 Credis Go Go library RedisPy Seconds
  4. Benchmarks pipeline size Ускоряем производительность Python-клиента Redis, используя Golang 100

    500 1000 5000 10000 50000 100000 0 2 4 6 8 10 12 14 16 Credis Go Go library RedisPy Pipeline size Seconds
  5. Тестирование Ускоряем производительность Python-клиента Redis, используя Golang  Credis https://github.com/yihuang/credis

     Asyncio redis https://github.com/jonathanslenders/asyncio-redis  Aredis https://github.com/NoneGG/aredis  Python + Go (raw realization)  Python + Go-redis library https://github.com/go-redis/redis
  6. Достоинства Ускоряем производительность Python-клиента Redis, используя Golang  Ощутимый прирост

    скорости pipeline и async  Читаемый код на Go  Максимально простое использование в Python  Инкапсуляция всей логики работы библиотеки в Golang
  7. Недостатки Ускоряем производительность Python-клиента Redis, используя Golang  Мало информации

     Сложность реализации по сравнению с другими методами  Вся ответственность за результат лежит на разработчике
  8. Полезные ссылки Ускоряем производительность Python-клиента Redis, используя Golang  https://github.com/deslum/gopipe

     http://nigerlittlepoole.com/post/153224915028/using-go-to-boost-python-performance  https://hackernoon.com/extending-python-3-in-go-78f3a69552ac  https://www.datadoghq.com/blog/engineering/cgo-and-python/  https://habr.com/company/mailru/blog/324250/