#linux
У меня есть 2 серверных Xeon процессора с 32 ядрами и установленной Linux Ubuntu 16.04. У меня есть питоновский скрипт,при запуске скрипта он выполняется на 1 ядре и это занимает достаточно длительное время.Может знает кто-нибудь как распараллелить вычисление этого скрипта,чтобы его обрабатывали сразу несколько ядер?
Ответы
Ответ 1
Необходимо понять, что имеющийся скрипт делает какие части возможно выполнять независимо друг от друга переписать скрипт используя процессы, потоки или что угодно другое для разделения одного потока команд на несколько Какого-то волшебного слова или директивы use many cores в императивных языках программирования нет. Потому что сама программа является последовательностью команд. Одну последовательность только одно ядро CPU выполнять и может. Нельзя одну последовательность команд параллельно разделить на 10 ядер и получить в результате осмысленный результат. Возможно, вам подойдёт и простейший способ загрузки нескольких ядер - просто запустить несколько копий программ, каждая из которых будет обрабатывать часть задач. Например, если вам нужно сжать 100 картинок - вы это можете сделать в одном цикле последовательно либо же запустить 10 программ, каждая из которых будет в том же самом цикле совершенно так же последовательно обрабатывать, но не все 100 изображений, а каждый из процессов отдельные 10. Это позволит скорей всего не очень сложным изменением кода использовать не 1, а 10 ядер. Возможно, удобнее будет взять какой-либо менеджер очередей: запускается нужное число (более простых) однопоточных программ, которые периодически запрашивают из очереди задачу - и выполняют эту задачу. Соответственно одна задача выполняется на одном ядре, но группа задач может выполняться одновременно разными копиями скрипта.
Комментариев нет:
Отправить комментарий