У меня есть объект словаря, содержащий вывод с ключом в качестве «id» и значением в качестве pandas dataframe. Размер словаря составляет 9. Мне нужно сохранить вывод pandas dataframe в отдельных файлах на HDFS для каждого идентификатора. Учитывая время, которое требуется для записи каждого файла как 13 минут * 9 = 107 минут, я пытаюсь распараллелить это так, чтобы каждая запись в файл происходила параллельно.
В рамках этого варианта использования я пытаюсь использовать многопроцессорность, как показано ниже -
def saveOutputs(data):
print(data[0])
#logic to write data in file
with Pool(processes = 9) as p:
for k, v in out.items(): #out is a dict which i need to persist in file
data = [k,v]
print(data[0])
p.map(saveOutputs,data)
Что я вижу, это то, что если мой идентификатор (ключ в dict) равен 1001, то когда saveOutputs вызывается как часть print в saveOutputs, он печатает значение как 1 вместо 1001, тогда как в моем Блок пула перед вызовом saveOutputs, оператор print печатает 1001.
Мне не очень понятно об этом поведении, и я не уверен, что отсутствует в неправильном. Нужны некоторые входные данные.
Спасибо.