Каковы варианты достижения parallelism в Python? Я хочу выполнить кучу вычислений, связанных с процессором, на некоторых очень больших растровках и хотел бы их распараллелить. Исходя из фона C, я знаком с тремя подходами к parallelism:
- Процессы передачи сообщений, возможно, распределенные по кластеру, например. MPI.
- Явная разделяемая память parallelism, либо с использованием pthreads или fork(), pipe(), et. аль
- Неявная разделяемая память parallelism с использованием OpenMP.
Решение о подходе к использованию - это упражнение в компромиссах.
В Python, какие подходы доступны и каковы их характеристики? Есть ли кластерный клон MPI? Каковы предпочтительные способы обеспечения общей памяти parallelism? Я слышал ссылку на проблемы с GIL, а также ссылки на тасклеты.
Короче говоря, что мне нужно знать о разных стратегиях параллелизации в Python, прежде чем выбирать между ними?