Python 一个阵列上计算的多处理
这个问题紧接着这个问题。我有一个大的3D阵列,我必须对它做一些繁重的计算。 我想将阵列的一部分分成4部分,并用计算机的每4个核心对每个部分进行计算。。。 对我的3D阵列的每个切片都这样做…最好的方法是什么Python 一个阵列上计算的多处理,python,arrays,multidimensional-array,multiprocessing,Python,Arrays,Multidimensional Array,Multiprocessing,这个问题紧接着这个问题。我有一个大的3D阵列,我必须对它做一些繁重的计算。 我想将阵列的一部分分成4部分,并用计算机的每4个核心对每个部分进行计算。。。 对我的3D阵列的每个切片都这样做…最好的方法是什么 import numpy size = 8. Y=(arange(2000)) X=(arange(2000)) (xx,yy)=meshgrid(X,Y) array=zeros((Y.shape[0],X.shape[0],size)) array[:,:,0] = 0 array[
import numpy
size = 8.
Y=(arange(2000))
X=(arange(2000))
(xx,yy)=meshgrid(X,Y)
array=zeros((Y.shape[0],X.shape[0],size))
array[:,:,0] = 0
array[:,:,1] = X+Y
array[:,:,2] = X*cos(X)+Y*sin(Y)
array[:,:,3] = X**3+sin(X)+X**2+Y**2+sin(Y)
您可以使用模块中的
池
:
它同样适用于三维numpy阵列:
from multiprocessing import Pool
import numpy
def f(num):
return num * 2 # replace with heavy computation
arr = numpy.array(
[numpy.array([
numpy.array([1,2,3]),
numpy.array([4,5,6]),
numpy.array([7,8,9])]),
numpy.array([
numpy.array([1,2,3]),
numpy.array([4,5,6]),
numpy.array([7,8,9])])])
p = Pool(4)
print p.map(f, arr)
您可以使用模块中的
池
:
它同样适用于三维numpy阵列:
from multiprocessing import Pool
import numpy
def f(num):
return num * 2 # replace with heavy computation
arr = numpy.array(
[numpy.array([
numpy.array([1,2,3]),
numpy.array([4,5,6]),
numpy.array([7,8,9])]),
numpy.array([
numpy.array([1,2,3]),
numpy.array([4,5,6]),
numpy.array([7,8,9])])])
p = Pool(4)
print p.map(f, arr)
您可以使用模块中的
池
:
它同样适用于三维numpy阵列:
from multiprocessing import Pool
import numpy
def f(num):
return num * 2 # replace with heavy computation
arr = numpy.array(
[numpy.array([
numpy.array([1,2,3]),
numpy.array([4,5,6]),
numpy.array([7,8,9])]),
numpy.array([
numpy.array([1,2,3]),
numpy.array([4,5,6]),
numpy.array([7,8,9])])])
p = Pool(4)
print p.map(f, arr)
您可以使用模块中的
池
:
它同样适用于三维numpy阵列:
from multiprocessing import Pool
import numpy
def f(num):
return num * 2 # replace with heavy computation
arr = numpy.array(
[numpy.array([
numpy.array([1,2,3]),
numpy.array([4,5,6]),
numpy.array([7,8,9])]),
numpy.array([
numpy.array([1,2,3]),
numpy.array([4,5,6]),
numpy.array([7,8,9])])])
p = Pool(4)
print p.map(f, arr)
作为多处理的替代方案,您可以使用以下模块:
作为多处理的替代方案,您可以使用以下模块:
作为多处理的替代方案,您可以使用以下模块:
作为多处理的替代方案,您可以使用以下模块:
感谢您的帮助,但当我计算有无多进程的时间时……我发现没有多进程我会更快:s@user3601754每次调用
f
的费用有多高?如果f
没有花费大量时间运行,那么多处理
将不会有帮助,因为在进程之间传递数组内容的开销将大于同时运行4个f
实例的好处。感谢您的帮助,但是当我计算有无多进程的时间时……我发现没有多进程我会更快:s@user3601754每次调用f
的费用有多高?如果f
没有花费大量时间运行,那么多处理
将不会有帮助,因为在进程之间传递数组内容的开销将大于同时运行4个f
实例的好处。感谢您的帮助,但是当我计算有无多进程的时间时……我发现没有多进程我会更快:s@user3601754每次调用f
的费用有多高?如果f
没有花费大量时间运行,那么多处理
将不会有帮助,因为在进程之间传递数组内容的开销将大于同时运行4个f
实例的好处。感谢您的帮助,但是当我计算有无多进程的时间时……我发现没有多进程我会更快:s@user3601754每次调用f
的费用有多高?如果f
没有花费大量时间运行,那么多处理
不会有帮助,因为在进程之间传递数组内容的开销将大于同时运行4个f
实例的好处。感谢您的帮助!我试过了,但是当我打印时,我得到了“”,我找不到如何读取我的结果:在python生成器上查看文档:。您可以使用for循环来迭代exc.map()
的结果,这是迄今为止最简单的“对数组的每个项执行操作,并行执行”的方法。值得一提的是,谢谢你的帮助!我试过了,但是当我打印时,我得到了“”,我找不到如何读取我的结果:在python生成器上查看文档:。您可以使用for循环来迭代exc.map()
的结果,这是迄今为止最简单的“对数组的每个项执行操作,并行执行”的方法。值得一提的是,谢谢你的帮助!我试过了,但是当我打印时,我得到了“”,我找不到如何读取我的结果:在python生成器上查看文档:。您可以使用for循环来迭代exc.map()
的结果,这是迄今为止最简单的“对数组的每个项执行操作,并行执行”的方法。值得一提的是,谢谢你的帮助!我试过了,但是当我打印时,我得到了“”,我找不到如何读取我的结果:在python生成器上查看文档:。您可以使用for循环来迭代exc.map()
的结果,这是迄今为止最简单的“对数组的每个项执行操作,并行执行”的方法。值得一提的是