@centrin0

Как выполнить задачу параллельно и получить результат?

Имеется проект на python3.
Есть функция, выполняющая долгие вычисления. В конце она возвращает число.
Эти числа, после нескольких проходов вычислений, нужно сложить.
Как запустить выполнение функции в несколько потоков, дождаться их завершения и получить значения из потока?
Какую библиотеку использовать, thread, multiprocessing?
  • Вопрос задан
  • 1466 просмотров
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Python
Седой и строгий
Узкое место процессор? Если да, то multiprocessing. Если IO, то можно и thread, но лучше gevent.

Что-то вроде
import multiprocessing as mp

def slow_calc(data):
    ...
    return result


pool = mp.Pool(processes=mp.cpu_count())
for res in pool.map(slow_calc, data_chunks):
    ...
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Avernial
@Avernial
Разрабатываю научное ПО на языке Python.
Первый пример с Pool:python docs
Ответ написан
Комментировать
@balamut108
Py
Сейчас самая прогрессивная библиотека в этом направлении это asyncio, так что копай лучше в ту строну.
Вот ссылка: https://docs.python.org/3/library/asyncio.html
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы