与joblib并行化 - 清晰度

时间:2016-05-08 10:56:35

标签: python-2.7 parallel-processing joblib

我一直在寻找最近几个小时,我无法理解如何做到这一点 - 我是并行计算世界的新手。

我的任务:我希望在粒子数组上更新特定值(或三个)。目前,我有一个功能,如:

def velocity_update(particle_array, Field1, Field2)
    for n in range(N)
        particle_array[0,n] = # vx equation
        particle_array[1,n] = # vy equation
        particle_array[2,n] = # vz equation
return particle_array

其中粒子数组包含2D numpy数组中N粒子的每个粒子的属性(位置,速度等)。 Field1和Field2是作用于这些粒子的场,但粒子不会相互影响或相互影响,因此这些只是用作查找表的其他数组。

我的问题:如何使用joblib来并行化这个循环?我是否必须从函数中删除循环并在主程序中迭代(仅为特定粒子发送我的数组的一列,而不是整个数组),或者是否有一种在函数内并行化的方法,所以我仍然可以返回我更新的粒子数组?我知道每次复制整个阵列似乎效率低下,但粒子的位置也很重要 - 所以我需要粒子上的所有数据(虽然我只是改变了速度)。

通常我会玩它,但目前我很难理解如何应用它来提供示例代码。任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:0)

我用谷歌搜索了如何使用joblib实现并行计算,并在joblib并行类上找到了这个link。我希望这可以解决你的问题。

一切顺利!