concurrent.futures для анализа данных с интенсивным использованием процессора - PullRequest
0 голосов
/ 21 января 2020

У меня более 100 спутниковых снимков с несколькими спектральными полосами. В прошлом я использовал свой сценарий анализа, чтобы go проходил через все пиксели и выполнял расчеты, которые мне нужно сделать, по одному изображению за раз. Мой сценарий не использовал 6-ядерный компьютер, и я столкнулся с реализацией concurrent.futures, которая звучала так, как мне нужно.

У меня есть функция, которая выполняет всю необходимую работу

def mesma(filename):
   ....
   ....

Это длинная функция, но я знаю, что она работает. Я использовал его в течение l oop для перебора всех имеющихся у меня файлов изображений. Для завершения sh одного файла требуется примерно 30 минут.

Я попробовал следующее:

with concurrent.futures.ProcessPoolExecutor(max_workers=6) as executor:
    executor.map(mesma, filelist)

* Я выбрал max_workers = 6 в качестве примера, ранее я не делал t включает его, и он создал 12 процессов (я предполагаю, что каждое ядро ​​выполняет гиперпоточность), и

pmset -g thermlog

показывает 12 процессоров.

При выполнении это создает 6 процессов с уникальными именами файлов, как и ожидалось , Однако даже через пару часов я не получаю никаких сообщений или сообщений об ошибках. Интересно, что (на Jupyterlab), когда я пытаюсь остановить скрипт, он автоматически перемещается на следующие 6 файлов и так далее, пока я не остановлю все ядра.

Я надеялся, что с ProcessPoolExecuter я смог получить некоторые значительное ускорение обработки изображений, так как мне не пришлось бы ждать, пока одно изображение заблокирует процессор.

concurrent.futures - для меня совершенно новая сфера, поэтому, возможно, я упускаю что-то очевидное здесь.

Обновление: Когда я указал max_workers для любого числа, оно действительно работает. Когда я не указываю max_workers, он никогда ничего не выводит. Сейчас я сохраню флаг max_workers.

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