python中的多处理嵌套循环

时间:2019-06-21 07:58:58

标签: python-3.x parallel-processing python-multiprocessing cpu-cores

我对使用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

我的代码可以使用多处理吗?或任何其他并行计算选项?

0 个答案:

没有答案