Как можно запускать несколько вычислений параллельно, останавливая их при первом возвращении?Как можно запускать несколько вычислений параллельно, останавливая их при первом возвращении? [Python]
Приложение, которое я имею в виду, следующее: существует несколько способов вычисления определенного значения; каждый метод принимает различное количество времени в зависимости от параметров функции; путем параллельного запуска вычислений, самый быстрый расчет будет автоматически «выбран» каждый раз, а остальные вычисления будут остановлены.
Теперь, есть некоторые «детали», которые делают более трудным этот вопрос:
- Параметры функции должны быть рассчитаны включают функции (которые вычисляются из точек данных, они не являются функции модуля верхнего уровня). Фактически, вычисление представляет собой свертку двух функций. Я не уверен, как такие параметры функции могут быть переданы подпроцессу (они не подбираются).
- У меня нет доступа ко всем расчетным кодам: некоторые вычисления выполняются внутри Scipy (возможно, через Fortran или C-код). Я не уверен, что потоки предлагают нечто похожее на сигналы терминации, которые могут быть отправлены процессам.
Это что-то, что Python может сделать относительно легко?
'multiprocessing' отлично работает для этой более сложной ситуации! На самом деле мне удалось передать * не-pickleable функцию * в качестве аргумента для вычислений! Хотя «многопроцессорность» была просто удобной оболочкой вокруг «подпроцесса» и «потоковой обработки», но мне кажется, что «многопроцессорность» обеспечивает гораздо больше. – EOL
PS: Я проверил, что оба ядра были полностью использованы вычислениями. – EOL