Я пытаюсь запустить некоторые очень большие данные временных рядов, используя concurrent.futures.ProcessPoolExecutor (). Набор данных содержит несколько временных рядов (которые являются независимыми). Весь набор данных доступен в списке кортежей data
, которые я передаю через вспомогательную функцию следующим образом:
def help_func(daa):
large_function(daa[0], daa[1], daa[2])
with concurrent.futures.ProcessPoolExecutor() as executor:
executor.map(help_func, data, chunksize=1)
Теперь, хотя различные временные ряды, содержащиеся в данных, являются независимыми по столбцам, из-за характера данных временных рядов значения внутри временного ряда необходимо обрабатывать одно за другим. Упорядочив переменную data
в терминах разных временных рядов, я уверен, что карта всегда будет выполнять вызовы последовательно во времени.
С executor.map
Я не могу найти способ привязать определенный временной ряд к одному и тому же ядру всегда или каким-то образом поделиться состоянием из предыдущих попыток с процессом, работающим на новом ядре.
При текущей настройке всякий раз, когда обработка для новой временной метки вызывается на новом ядре, она начинается с шага инициализации.
Есть ли элегантное решение этой проблемы?