Python多处理比顺序处理慢

2024-10-02 00:34:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直在玩弄多处理API,不明白为什么在CPU绑定的代码上使用ProcessPoolExecutor时代码运行较慢。出于某种原因,多线程比多处理快得多,即使代码不受I/O限制,但顺序仍然是最快的

我需要循环一个不同元素(交易)的列表,并迭代其他3个列表(列表、ois曲线、列表、双曲线、列表、基础曲线)。为了实现这一点,我在for循环中使用executor.map。有没有更好的编程方法?任何反馈都将不胜感激,我已经挣扎了一段时间。 谢谢

以下是我试图做的:

def risks_parallel(trade, list_ois_curves_directional, list_dual_curves_directional, list_basis_curves_directional):

MtM_result = pricer_engine(trade[0], trade[1], trade[2], trade[3], trade[4], trade[5], trade[6], trade[7], list_dual_curves_directional, list_ois_curves_directional, trade[10], trade[11], trade[12])
return MtM_result

def executor_function(trades):
if __name__ == '__main__':
    with concurrent.futures.ProcessPoolExecutor() as executor:

        for trade in trades:

            # Run the risks in parallel for each trade
            results = executor.map(risks_parallel, repeat(trade), list_ois_curves_directional, list_dual_curves_directional, list_basis_curves_directional)

return

Tags: 代码map列表forparallel曲线listtrade

热门问题