Мой компьютер имеет 16 ядер процессора и пытается сравнить время выполнения задачи между celery
и multiprocessing
Вот эксперименты (update_daily_price
- это метод для сканирования некоторых данных о дневных ценах акцийданный символ из Интернета)
1) Процесс с одной нитью
код
for s in symbol_list:
update_daily_price(symbol)
Это заняло всего "12 минут 54 сек"
2) muliprocessing
библиотекарь
код
pool = Pool(8)
pool.map(update_daily_price, symbol_list)
pool.close()
pool.join()
Потребовалось всего "2 минуты 10 секунд"
3) celery
сapply_async ()
Я запустил рабочий процесс с помощью celery --workdir=trading/ --concurrency=8 -P eventlet worker
и запустил задачу, подобную этой:
код
@shared_task
def update_dailyprice_task1(symbol):
update_daily_price(symbol)
from celery import group
jobs = group(update_dailyprice_task1.s(symbol) for symbol in symbol_list)
jobs.apply_async()
Это заняло всего "10 минут 24 сек"
Как вы можете видеть здесь, разница между 1)
и 3)
почти не так велика.Я что-то упускаю при выполнении задач по распределению сельдерея?