#python #celery #python-rq
Вопрос:
Я не уверен, следует ли мне использовать «сельдерей» или «rq».
Я ищу легкое решение, и мое внутреннее чутье подсказывало мне, что импорт сельдерея будет намного медленнее, чем импорт rq.
Но верно и обратное. По крайней мере, на моем устройстве:
> time python -c 'import rq'
real 0m0,115s
user 0m0,101s
sys 0m0,014s
> time python -c 'import celery'
real 0m0,035s
user 0m0,034s
sys 0m0,001s
Я измерил это несколько раз — тот же результат.
Мое предубеждение было неверным. Почему импорт rq в три раза медленнее?
С тех пор, как кто-то попросил об этом в комментарии:
time python -c 'import huey'
real 0m0,096s
user 0m0,083s
sys 0m0,014s
Комментарии:
1. Это зависит от того, что делает модуль при его импорте. Но импорт выполняется только один раз, когда вы запускаете свой скрипт. Действительно ли имеет значение эта минимальная разница во времени при импорте?
2. зачем отвечать сейчас, когда вы можете дождаться награды 😉
3. @Matthias во время разработки я запускаю python (или, точнее, pytest) снова и снова (к сожалению (AFAIK) невозможно просто перезагрузить код в долго работающем интерпретаторе). Это означает, что переводчик запускается снова и снова. Я хочу, чтобы это было быстро.
4. Почему для вас важна скорость импорта? Это делается один раз, когда процесс все равно начинается…
5. Поскольку вы сравниваете Сельдерей и rq, я предлагаю вам также попробовать Huey 2 .
Ответ №1:
Грубо говоря, это связано с «бесплатным» созданием экземпляра LocalStack
in rq.local
. При импорте сельдерея не создается аналогичный сложный потокобезопасный объект. Тем не менее, вы можете видеть разные моменты, когда вы фактически создаете объекты приложения для каждой платформы.