pandas 多处理嵌套循环以优化sagemaker示例的使用?

jvlzgdj9  于 2022-12-09  发布在  其他
关注(0)|答案(1)|浏览(159)

嗨,我正在尝试理解/实现下面嵌套循环的多处理。
我目前正在使用sagemaker studio,我正在尝试优化我的示例使用。我有大约500 000个客户,每个客户都是一个独立的计算。所以我想知道如果我使用一个具有96个vcpu的示例,是否意味着我可以在每个vcpu上运行大约5400个客户?还有,我如何将多处理添加到下面的嵌套循环中,任何建议帮助都将不胜感激。

end_dates = End.reshape(-1)  # array([30, 31, 30, 31, 31, 28, 31, 30, 31, 30]); just to simplify access to the end date values
results={}
for cust_id, state, amount, start, group, loan_rate in data1.itertuples(name=None, index=False):
    res = [amount * matrix_data[start-1, state, :]]
    for year in range(start+1, len(matrix_data)+1,):
        res.append(lookup1.loc[year].iat[0] * np.array(res[-1]))
        res.append(res[-1] * loan_rate * end_dates[year-1]/365) # year - 1 here
        res.append(res[-1]+ 100)
        res.append(np.linalg.multi_dot([res[-1],matrix_data[year-1]]))
    results[cust_id] = res

我的前一个问题提供了这里的预处理步骤:How to add another iterator to nested loop in python without additional loop?

uttx8gqw

uttx8gqw1#

如果我说错了请纠正我

from multiprocessing import Pool

def compute_result(cust_id, state, amount, start, group, loan_rate):
    res = [amount * matrix_data[start-1, state, :]]
    for year in range(start+1, len(matrix_data)+1,):
        res.append(lookup1.loc[year].iat[0] * np.array(res[-1]))
        res.append(res[-1] * loan_rate * end_dates[year-1]/365) # year - 1 here
        res.append(res[-1]+ 100)
        res.append(np.linalg.multi_dot([res[-1],matrix_data[year-1]]))
    return (cust_id, res)

if __name__ == '__main__':
    with Pool() as p:
        results = dict(p.starmap(compute_result, data1.itertuples(name=None, index=False)))

相关问题