我是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或其他方法是否更好。我只想开始。预先感谢。
答案 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))