如何在for循环中对代码进行多处理/并行化

时间:2019-04-30 17:54:57

标签: python parallel-processing multiprocessing

我是python的新手,但是我制作了一个程序,该程序需要很长时间才能计算出,并且仅使用12%的CPU。我认为如果它使用了我所有的CPU,它的完成速度会更快-特别是对于lopp。我检查了python教程和文档,但是现在我很困惑。

我在datacube.py中有一个简单的代码,像这样:

def datacube(x,y,z):
    xt = x * y * z
    return xt

在我的主程序中:

import multiprocessing as mp
import numpy as np
import datacube

x_range = np.arange(1,50,5)
y_range = np.arange(2,200,1)
z_range = np.arange(3,300,3)

x = y = 5

dump = []
data3 = [mp.Process(target=datacube.datacube, args=(x,y,z)) for z in z_range]
dump.append(data3)

我想要的基本上是(x_range)*(y_range)*(z_range),因为我的程序嵌套在for循环中。我已经尝试了所有我知道的东西,但是没有用。

我不知道map,Process或pool或其他方法是否更好。我只想开始。预先感谢。

1 个答案:

答案 0 :(得分:0)

也许这可以满足您的需求。

import numpy as np
from itertools import product

x_range = np.arange(1,50,5)
y_range = np.arange(2,200,1)
z_range = np.arange(3,300,3)
list(np.prod(x) for x in product(x_range,y_range,z_range))