Почему зависает многопроцессорность? - PullRequest
0 голосов
/ 05 августа 2020

Я впервые пытаюсь использовать многопроцессорность со следующим кодом:

def fuzzy_match(blg_matches, op_matches):
    update_dicts = []
    with concurrent.futures.ProcessPoolExecutor() as executor:
        scored_matches = [
            executor.submit(run_matching, blg_match, repeat(op_matches))
            for blg_match in blg_matches
        ]
        for match in concurrent.futures.as_completed(scored_matches):
            update_dicts.append(match)
    return update_dicts

Однако он просто зависает и ничего не делает.

Для тестирования я ' Мы удалили функцию run_matching до:

def run_matching(blg_match, op_matches):
    return 2

И она все еще зависает.

Оба blg_matches и op_matches являются объектами SQLAlchemy Query.

Любые идеи о том, где я ошибаюсь?

1 Ответ

0 голосов
/ 07 августа 2020

Итак, здесь было две проблемы.

  1. Я использую Windows, и вам нужно убедиться, что ваш многопроцессорный код находится в if __name__ == "__main__":
  2. Многопроцессорность похоже, не нравятся объекты запроса SQLAlchemy. Как только я заменил запросы на списки, все заработало
...