Как стать автором
Обновить
15
0
Евгений Козлов @lebron32rus

Team Lead

Отправить сообщение

Спасибо за комментарий!

Можете привести пример кода, как можно под задачу из статьи адаптировать процессы чтобы они работали эффективнее?

Оказалось что я перепутал, pypy это версия с GIL + JIT

Придумал кейс который ломает pypy, видимо JIT бессилен перед таким способом прибавить единицу)

class CounterForPypy:
  def __init__(self):
    self.val = 0

  def change(self):
    self.val += random.randint(1, 1)
Python 3.9.17 (3f3f2298ddc56db44bbdb4551ce992d8e9401646, Jun 15 2023, 11:14:28)
[PyPy 7.3.12 with GCC Apple LLVM 13.1.6 (clang-1316.0.21.2.5)]
CounterForPypy: expected val: 1000000, actual val: 645618


Python 3.10.12 (af44d0b8114cb82c40a07bb9ee9c1ca8a1b3688c, Jun 15 2023, 12:46:58)
[PyPy 7.3.12 with GCC Apple LLVM 13.1.6 (clang-1316.0.21.2.5)]
CounterForPypy: expected val: 1000000, actual val: 447503

Запустил несколько раз, через раз срабатывает на 3.10 а на 3.9 видимо проблемы нет)

Python 3.9.17 (3f3f2298ddc56db44bbdb4551ce992d8e9401646, Jun 15 2023, 11:14:28)
[PyPy 7.3.12 with GCC Apple LLVM 13.1.6 (clang-1316.0.21.2.5)]
Counter: expected val: 1000000, actual val: 1000000
CounterWithConversion: expected val: 1000000, actual val: 900000
ThreadSafeCounter: expected val: 1000000, actual val: 1000000


Python 3.10.12 (af44d0b8114cb82c40a07bb9ee9c1ca8a1b3688c, Jun 15 2023, 12:46:58)
[PyPy 7.3.12 with GCC Apple LLVM 13.1.6 (clang-1316.0.21.2.5)]
Counter: expected val: 1000000, actual val: 965024
CounterWithConversion: expected val: 1000000, actual val: 1000000
ThreadSafeCounter: expected val: 1000000, actual val: 1000000

Python 3.9.17 (3f3f2298ddc56db44bbdb4551ce992d8e9401646, Jun 15 2023, 11:14:28)
[PyPy 7.3.12 with GCC Apple LLVM 13.1.6 (clang-1316.0.21.2.5)]
Counter: expected val: 1000000, actual val: 1000000
CounterWithConversion: expected val: 1000000, actual val: 1000000
ThreadSafeCounter: expected val: 1000000, actual val: 1000000


Python 3.10.12 (af44d0b8114cb82c40a07bb9ee9c1ca8a1b3688c, Jun 15 2023, 12:46:58)
[PyPy 7.3.12 with GCC Apple LLVM 13.1.6 (clang-1316.0.21.2.5)]
Counter: expected val: 1000000, actual val: 1000000
CounterWithConversion: expected val: 1000000, actual val: 1000000
ThreadSafeCounter: expected val: 1000000, actual val: 1000000

Версии без GIL само собой будут пошустрее, но я без понятия как они на проде себя показывают.

Спасибо за ценные комментарии?

Такова цена, синхронизация не бесплатная)

С другой стороны, Rabbit обеспечивает меньшее латенси при доставке сообщений, другими словами — переварит меньше, зато быстрее.

Не совсем понятна формулировка, если задержка низкая то наоборот, пропускная способность будет выше, так как можно обработать больше сообщений в единицу времени. А при высокой задержке пропускная способность ниже.

В любом случае, спасибо за статью, получилось интересно :)

Информация

В рейтинге
Не участвует
Откуда
Санкт-Петербург, Санкт-Петербург и область, Россия
Дата рождения
Зарегистрирован
Активность