相关疑难解决方法(0)

使用numpy数组和共享内存并行化python循环

我知道关于这个主题的几个问题和答案,但是没有找到这个特定问题的满意答案:

什么是简单的共享内存并行化python循环的方法是什么?numpy数组是通过numpy/scipy函数操作的?

我不是在寻找最有效的方法,我只想要一些简单的实现,当循环不是并行运行时不需要重大的重写.就像OpenMP在低级语言中实现一样.

我在这方面看到的最好的答案就是这个,但这是一种相当笨重的方式,需要一个人将循环表达成一个带有单个参数的函数,几行共享数组转换crud,似乎需要并行函数从中调用__main__,它似乎从交互式提示(我花了很多时间)中运行良好.

有了Python的所有简单性,这真的是解决循环问题的最佳方法吗?真?这在OpenMP方式中并行化是微不足道的.

我仔细阅读了多处理模块的不透明文档,但却发现它非常通用,除了简单的循环并行化之外它似乎适合所有东西.我对设置Managers,Proxies,Pipes等不感兴趣.我只是有一个简单的循环,完全并行,在任务之间没有任何通信.使用MPI来平行这样一个简单的情况似乎有些过分,更不用说在这种情况下它将是内存效率低下的.

我没有时间去了解Python的众多不同的共享内存并行包,但是想知道是否有人在这方面有更多经验并且可以向我展示一种更简单的方法.请不要建议串行优化技术,如Cython(我已经使用它),或使用并行numpy/scipy函数,如BLAS(我的情况更一般,更平行).

python parallel-processing numpy shared-memory multiprocessing

23
推荐指数
1
解决办法
2万
查看次数

python中的并行编程

我的项目是使用OpenMP在C中做一些并行的算法.现在我想用Python做同样的项目.有没有类似于openmp for python的东西?

python parallel-processing

15
推荐指数
0
解决办法
1万
查看次数

如何使进程能够在主程序的数组中写入?

我正在创建一个进程池,每个进程池都需要在主程序中存在的矩阵的不同部分进行编写.不存在覆盖信息的担心,因为每个过程将与矩阵的不同行一起工作.如何使矩阵在流程中可写?

该程序是教授指定我的矩阵乘数,必须进行多处理.它将为计算机的每个核心创建一个进程.主程序将矩阵的不同部分发送给进程,然后他们将计算它们,然后它们将以一种方式返回它们,我可以识别哪个响应对应于它所基于的行.

python matrix multiprocessing

7
推荐指数
3
解决办法
2万
查看次数

Python多处理,用于2D阵列的昂贵操作

我有一个功能,说它fun(a,b)非常昂贵,并返回一组数据.

我目前的方法如下:

a = np.linspace(0,100,300)
b = np.linspace(0,100,300)
A,B = np.meshgrid(a,b)
Y = np.zeros(A.shape)

for i,av in enumerate(a):
  for j, bv in enumerate(b):
    Y[i,j] = fun(av,bv)
Run Code Online (Sandbox Code Playgroud)

(排序,我不得不混淆一些东西以使其适合).无论如何,这个过程需要相当长的时间,我想知道是否有一种直接的方式来使用我的多核处理器来加快速度.

python multiprocessing

4
推荐指数
1
解决办法
2472
查看次数

在函数中执行循环多重处理的最快方法?

1.我有一个函数var。我想知道通过利用系统拥有的所有处理器、内核、线程和 RAM 内存进行多处理/并行处理来快速运行此函数中的循环的最佳方法。

import numpy
from pysheds.grid import Grid

xs = 82.1206, 72.4542, 65.0431, 83.8056, 35.6744
ys = 25.2111, 17.9458, 13.8844, 10.0833, 24.8306

a = r'/home/test/image1.tif'
b = r'/home/test/image2.tif'

def var(interest):
    
    variable_avg = []
    for (x,y) in zip(xs,ys):
        grid = Grid.from_raster(interest, data_name='map')

        grid.catchment(data='map', x=x, y=y, out_name='catch')

        variable = grid.view('catch', nodata=np.nan)
        variable = numpy.array(variable)
        variablemean = (variable).mean()
        variable_avg.append(variablemean)
    return(variable_avg)

Run Code Online (Sandbox Code Playgroud)

2.var如果我可以针对给定的函数多个参数并行运行函数和循环,那就太好了。var(a)例如:var(b)同时。因为它比单独并行化循环消耗的时间要少得多。

如果没有意义,请忽略 2。

python parallel-processing multithreading multiprocessing python-asyncio

4
推荐指数
1
解决办法
2943
查看次数