Как только у меня есть данные в массивах, я использую функцию multiprocessingpool.starmap для параллельного запуска вычислений пакета Metpy, которые работают только с 1D массивы. Здесь происходит что-то странное. Теперь программа, похоже, возвращается к внешнему циклу на несколько лет и снова начинает выполнять команду «# начать с обработки некоторых файлов, которые поступают в ежегодном формате».
Вот мой код, который носит обобщенный характер, поскольку у меня было много проблем при попытке воспроизвести эту ошибку на гораздо меньшем примере.
Код: Выделить всё
# loop over years
for yr in np.arange(46) + 1979:
# begin by processing some files that come in yearly format
# loop over months
for mo in range(12) + 1:
# open and put data from specific lat/lon points into arrays by variable
# loop over lat/lon locations ("stations")
for station in range(50):
for hr in range(2920):
# fill arrays
# go back to working within outer loop (years) for starting multiprocessing work on filled arrays
with Pool(processes = 16) as pool1:
tw_sfc_pooled = pool1.starmap(mpcalc.wet_bulb_temperature, tw_sfc_argument_list)
bulk_shear_1km_pooled = pool1.starmap(mpcalc.bulk_shear, bulk_shear_1km_argument_list)
many_more_pooled = poo1.starmap(mpcalc.func, many arg lists)
pool1.close() # am I closing this wrong?
pool1.join() # do I need this statement here?
# put pooled lists into final variable arrays for use in work
Я предполагаю, что либо многопроцессорная обработка не запускается или не корректно останавливается в моем коде, либо ему не нравится находиться внутри цикла, или, возможно, проблемы возникают из-за наличия более 20 процессов Pool.starmap. Не знаю.
Есть мысли, в чем проблема?
Подробнее здесь: https://stackoverflow.com/questions/793 ... -shut-it-d