Как ускорить работу скрипта на питоне?
У меня есть код который берет данные из базы о пользователе и выполняет определенный код, таких пользователей много, как сделать чтобы не по очереди перебирать пользователей а выполнять параллельно сразу для всех?
while True:
if Signal.objects.filter(status=False).count() > 0:
orders = Signal.objects.filter(status=False)
users = Users.objects.filter(subs_active=True)
for user in users:
# some code
Ответы (1 шт):
Автор решения: eri
→ Ссылка
Если #some code ресурсоемкая часть, то замените for на
def worker(user):
#some code
pool=multiprocessing.Pool(8)
pool.imap_unordered(worker, users)
pool.join()
И вызов каунт тут не нужен мне кажется.
Не сразу для всех, но одновременно 8. Не стоит перебарщивать с воркерами... В зависимости от самой нагрузки можно добавить внутри воркера асинхронность или треды.