Search
Write a publication
Pull to refresh
1
0
Ilya Biin @mohtep

╰(*°▽°*)╯

Send message

Хорошо, сделаю :)
Есть какие-то конкретные нюансы, которые интересны? или технологию в-общем?

Бенчмарк для го написан совершенно неверно. Чтобы не расходовать стек под горутины их надо "приземлять". Если будут запросы - покажу как этот код надо переделать для миллиона потоков.

Увы. Ваше предложение корректно, но только в случае, если память бесконечна. То есть мы должны вычитать объем данных предназначавшихся для неактивного воркера. Если этот объем велик, то мы достаточно агрессивно начнем тратить хип.
И еще с созданными специально для этой цели Aerospike, Cassandra, Couchbase.
Можно. Конечно, как и с любыми инструментами, есть нюансы.

Интерпретатор python весьма нетороплив. Поэтому использовать его для систем, где большое число вычислений на CPU, не самое хорошее решение. Однако большинство проектов сбалансированны по нагрузке. И значительную часть времени проводят в IO. Для таких проектов скорость разработки, которую предоставляет python, с лихвой компенсирует неторопливость.

К тому же всегда есть несколько хороших способов избавится от бутылочного горлышка в коде.
Первая и самая ступень оптимизации — профайлинг. Практика показала, что 9/10 проблем исчезали после изучения тормозного кода. Его удавалось переписать.

Если же оптимизировать какой-то код нельзя ну никак, тогда в дело вступают модули на C.

Для проектов которые пишутся с нуля, есть очень хороший совет — использовать в качестве интерпретатора pypy. На нашем коде он дает выигрыш от 6 до 10 раз. Но разборчив к используемым библиотекам.

Из моих любимых рецептов:
1 — Используйте легкие потоки ( eventlet, greenlet ), они практически бесплатны по оверхеду и помогают грамотно распоряжаться временем CPU, избегая простоев
2 — По возможности используйте написанные на C расширения, например, msgpack для сериализации. Это быстро.
3 — ORM это медленно. Особенно django. Старайтесь не злоупотреблять им.
4 — Единственный стоящий профайлер для python, на мой взгляд, это statprof. Он вносит минимальные искажения в измеряемые участки.
5 — Если нужна параррельность по CPU — единственный выход это mutiprocessing. Треды в питоне неэффективны из-за GIL.
Python и производительность ( узкие места, различные типы параллельности, горизонтальное маштабирование, виды cpu профайлинга )
На самом деле, оценить себестоимость смс сообщения для оператора гораздо проще, чем вам кажется.
Крупные клиенты ( в том числе всеми любимые контент провайдеры ) покупают смс по тарифу 6 копеек за штуку. Можно взять это значение как верхнюю оценку себестоимости.

Information

Rating
Does not participate
Date of birth
Registered
Activity

Specialization

Backend Developer, System Software Engineer
Docker
Git
Linux
Python
Golang
High-loaded systems
Kubernetes
AWS
Redis