我一直在玩弄多处理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
目前没有回答
相关问题 更多 >
编程相关推荐