Я использую модуль многопроцессорной обработки Python для обработки +30 наборов данных с двумя тяжелыми объединенными функциями.
Первая функция func1 сохраняет частичный результат в каталоге, который второй функция func2 вызывается после. Вторая функция ничего не возвращает, просто генерирует другой файл с сохраненными выводами.
Это линейный процесс, подобный следующему:
def my_multiprocessing(input_path):
out_path = func1(input_path)
#Func2 uses out_path as input. Func2 returns no Python variable, just a file.
func2(out_path)
if __name__ == '__main__':
my_pool = Pool(cpu_count())
my_pool.map(my_multiprocessing, list_of_30_datasets_path)
Теперь я ожидаю, что многопроцессорная обработка будет работать линейно; для каждого набора данных сначала решите переменную func1 и после использования out_path , чтобы решить func2 .
Но пока что она работает пакетами, сначала решить ALL func1 для 30 наборов данных. Как он может обрабатываться после func2 , если там будет NO out_path s? (Python перезаписывает) Есть ли какая-то крутая магия c позади, которую я далеко понимаю?
Пожалуйста, помогите мне, это моя первая многопроцессорная задача, и я ожидаю, что она будет работать в течение недели, не могу испортить его. Большое спасибо!