Многопроцессорный вложенный цикл в Python - PullRequest
0 голосов
/ 21 июня 2019

Я очень плохо знаком со сложным кодированием на python, но я хочу улучшить свой код, чтобы он работал намного лучше и намного быстрее. В поисках этого я наткнулся на «многопроцессорность», которую я пытался реализовать, но не смог.

У меня есть процесс, который требует от меня выполнения нескольких циклов, и это занимает совсем немного времени, например, 160 часов всего за один год (и у меня есть 16 лет для вычисления). Я хочу использовать несколько ядер на сервере и вычислять процесс намного быстрее (сейчас я использую только одно ядро, а на моем сервере их было 48).

Ниже приведен код:

# My dataset
deficit_all.shape
Out: (5844, 400, 1440)

max_deficit_annual = np.zeros((16,400,1440))
int_year = 0

for year in tqdm(range(2000,2016)):
    for lat in tqdm(range(400)):
        for long in tqdm(range(1440)):
            if year%4 == 0:
                cummul_deficit = np.zeros(366)
                for i in tqdm(range(366)):
                    cummul_deficit[i] = deficit_all[i+int_year,lat,long] + cummul_deficit[i-1]
                    if cummul_deficit[i] < 0:
                        cummul_deficit[i] = 0
                    else:
                        continue
                #####print(np.nanmax(cummul_deficit))
                max_deficit_annual[year-2000,lat,long] = np.nanmax(cummul_deficit)

            else:
                cummul_deficit = np.zeros(365)
                for i in tqdm(range(365)):
                    cummul_deficit[i] = deficit_all[i+int_year,lat,long] + cummul_deficit[i-1]
                    if cummul_deficit[i] < 0:
                        cummul_deficit[i] = 0
                    else:
                        continue
                ######print(np.nanmax(cummul_deficit))
                max_deficit_annual[year-2000,lat,long] = np.nanmax(cummul_deficit)
            sleep(1)

    if year%4 == 0:
        int_year += 366
    else:
        int_year += 365

Возможно ли для моего кода использовать многопроцессорность? или любой другой вариант параллельных вычислений?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...