Запуск env: Ma c OS
База данных: Postgres
Python: 3,6
Я пытаюсь ускорить мои вычисления с помощью многопроцессорной обработки.
Позвольте мне обобщить проблему, чтобы вы не запутались.
Как есть
users = [UserModel1, UserModel2..UserModel1000]
calculator_fomular = [formular1<Instance of BaseCalculator>, formular2...formular100]
На данный момент каждый пользователь извлечен из списка и отправлен на l oop и рассчитывается, как показано ниже.
for user in users:
for formula in calculator_formula:
result = formula(user.score)
session.add(result)
session.commit()
Таким образом, это занимает много времени и использует только один поток для вычисления всех пользователей по всей формуле. В настоящее время он работает нормально.
Но когда я пытаюсь запустить многопроцессорную обработку, разбивая формулу на несколько групп, как это,
for user in users:
for formula in calculator_formula[(i-1)*10:i*10]: # variable 'i' is differently assigned by Parent.
result = formula(user.score)
session.add(result)
session.commit()
# users is fetched from database. Each process has its own db connection and fire the query to get user lists.
# formula is given from its parent.
# Both are the same at single process.
Должен ли я делать что-то по-другому?