Как обрабатывать параллельный пул при ошибке или исключении

Я использую набор инструментов для параллельных вычислений. Когда мой код Matlab завершается из-за исключения/ошибки во время работы параллельного рабочего процесса (например, внутри бесконечного цикла), я должен перезапустить пул через delete(gcp) и перезапустить gcp. В противном случае следующие прогоны всегда зависают. Но перезапуск параллельных пулов занимает слишком много времени.

Этого не происходит, когда я вручную отменяю будущий объект cancel(futureObject), но я не хочу делать это каждый раз, когда программа неожиданно завершается.

Я могу отменить futureObject в начале сценария Matlab, но объект удаляется, когда я случайно делаю clear all, и нет никакого способа, но я должен сделать delete(gcp). Есть ли способ автоматически отменить все будущие объекты (даже если они больше не находятся в базовой рабочей области) каждый раз, когда я перезапускаю скрипт Matlab?


person Domination    schedule 30.01.2020    source источник
comment
Звучит как вариант использования для onCleanup, может быть. Вы пытались использовать onCleanup в рамках своего скрипта для автоматической отмены futureObject?   -  person Andrew Janke    schedule 30.01.2020
comment
Как вы случайно clear all? Вы никогда не должны печатать это, никогда! В любом случае, самое простое решение вашей проблемы — сделать так, чтобы ваш код не выдавал ошибок. Взгляните, например, на try/catch.   -  person Cris Luengo    schedule 30.01.2020


Ответы (1)


Я просто решил использовать блок try/catch с блоком cancel(futureObject) на верхнем уровне скрипта.

person Domination    schedule 01.02.2020