Python многопроцессорная обработка вызывает ошибку, когда один процесс не - PullRequest
0 голосов
/ 18 марта 2020

Запуск 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.

Должен ли я делать что-то по-другому?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...