如何在python中并行嵌套for循环

时间:2016-10-20 09:23:10

标签: python joblib multiprocessor

我有这个包含嵌套循环的函数。我需要并行化以便更快地执行代码。

def euclid_distance(X,BOW_X):
     d3=[]
     d2=[]

     for l in range(len(X)):
         for n in range(l+1,len(X)):
             d1=[]
             for m in range(len(X[l])):
                 min1=999
                 p=0
                 while(p<len(X[n])):
                     d=scipy.spatial.distance.euclidean(X[l][m],X[n][p])
                     d=d*numpy.min([BOW_X[l][m],BOW_X[n][p]])
                     if(d<min1):
                         min1=d
                     if(min1==0):
                         break
                     p+=1
                 d1.append(min1)

             d2.append(d1)

     for i in range(len(d2)):
         d3.append(sum(d2[i]))


return (d3)

有没有办法做到这一点 X是一个包含列表的列表,其中包含向量。

2 个答案:

答案 0 :(得分:0)

你尝试过使用xrange代替范围吗?它可能有助于加快执行速度。 (这应该在评论中,但我尚未解锁,抱歉)

答案 1 :(得分:0)

如果您有GPU并且指令之间没有数据相关性,您可以使用PyCuda。使用PyCuda,您可以生成多个并行线程,但是设备之间的数据传输会有一些开销,即CPU和GPU。