Python多处理比顺序慢

时间:2020-05-11 20:13:15

标签: python python-multiprocessing python-multithreading

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

我需要遍历不同元素(交易)的列表,并遍历其他3个列表(list_ois_curves_direction,list_dual_curves_directional,list_basis_curves_directional)。为此,我在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

0 个答案:

没有答案