У меня есть функция, которая выполняет некоторую симуляцию, а возвращает массив в строчном формате.Многопроцессорность Python - отслеживание процесса работы pool.map
Я хочу запустить симуляцию (функцию) для различных значений входных параметров, более 10000 возможных входных значений, и записать результаты в один файл.
Я использую многопроцессорную обработку, в частности, функцию pool.map для параллельного запуска моделирования.
Поскольку весь процесс запуска функции моделирования более 10000 раз занимает очень много времени, я действительно хотел бы отслеживать процесс всей операции.
Я думаю, что проблема в моем текущем коде ниже заключается в том, что pool.map запускает функцию 10000 раз без отслеживания процесса во время этих операций. Как только параллельная обработка завершит выполнение 10000 симуляций (может быть от нескольких часов до нескольких дней.), Я продолжаю отслеживать, когда 10000 результатов моделирования сохраняются в файле. Так что это не отслеживает обработку операции pool.map.
Есть ли легкое исправление для моего кода, который позволит отслеживать процессы?
def simFunction(input):
# Does some simulation and outputs simResult
return str(simResult)
# Parallel processing
inputs = np.arange(0,10000,1)
if __name__ == "__main__":
numCores = multiprocessing.cpu_count()
pool = multiprocessing.Pool(processes = numCores)
t = pool.map(simFunction, inputs)
with open('results.txt','w') as out:
print("Starting to simulate " + str(len(inputs)) + " input values...")
counter = 0
for i in t:
out.write(i + '\n')
counter = counter + 1
if counter%100==0:
print(str(counter) + " of " + str(len(inputs)) + " input values simulated")
print('Finished!!!!')
большое вам спасибо! – user32147