gpt4 book ai didi

python - 在 python 中的多个 cpu 内核上运行简单循环(处理不同数据)的最简单方法?

转载 作者:太空狗 更新时间:2023-10-30 03:02:10 24 4
gpt4 key购买 nike

我正在计算每年相对计算密集型的一些数据。我已经使用 numba(效果很好)来减少运行迭代来计算数据所花费的时间。但是鉴于我有 20 年的独立数据,我想将它们分成 5 x 4 组,可以运行 4 个不同的 cpu 内核。

def compute_matrices(self):
for year in self.years:
self.xs[year].compute_matrix()

在上面的代码片段中,该函数是包含属性 year 和 xs 的类中的一个方法。 year 只是一个整数年,xs 是一个包含 xs.data 和 compute_matrix() 方法的横截面对象。

将其拆分到多个内核的最简单方法是什么?

  1. 如果有一个 Numba 风格的装饰器可以自动分解循环并在不同的进程上运行它们并将结果粘合在一起,那就太好了。这个存在吗?

  2. 我最好的选择是使用 Python.multiprocessing 吗?

最佳答案

因此,您可以考虑以下几点:

NumbaPro:https://store.continuum.io/cshop/accelerate/ .这基本上是类固醇的 Numba,为多核和多核架构提供支持。不幸的是,它并不便宜。

数字表达式:https://code.google.com/p/numexpr/ .这是实现超线程的 numpy 数组的表达式计算器。

Numexpr-Numba(实验性):https://github.com/gdementen/numexpr-numba .顾名思义,这是使用 Numba 后端的 Numexpr。

很多答案将取决于您的 compute_matrix 方法中所做的事情。

最快(就开发时间而言)的解决方案可能是使用 multiprocessing 库拆分您的计算。应该注意的是,如果您的 compute_matrix 函数没有副作用,使用多处理会更容易。

关于python - 在 python 中的多个 cpu 内核上运行简单循环(处理不同数据)的最简单方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22878108/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com