使用并行处理计算2D中每对点之间的距离

问题描述

在我的问题中,二维空间中有多组点。
即,第1组10分,第2组10分,第3组10分。

我需要计算每组中点之间的所有距离。 即)

距离(1,2,1,1):第1组中的点1与第2组中的点1之间的距离

距离(1,2):第1组中的点1与第2组中的点2之间的距离

距离(1,3):第1组中的点1与第2组中的点3之间的距离

....

距离(2,3,10,10):第2组第10点与第3组第10点之间的距离

距离覆盖所有组中的所有点。
目前,我使用了如下所示的4-4循环,但是这花费了太多时间。

distt = [[] for i in range(ball_number)]
for m in range(group_number-1):
    for n in range(m+1,group_number):
        for i in range(ball_number):
            for j in range(ball_number):
                    distt[i].insert(j,distance between point[i] and point[j])

有人建议我……。“使用多个线程(组的编号相同)和类,并用一个线程计算单个组的所有距离”,但我不知道该怎么做。 / p>

有人可以通过多线程或任何建议帮助我实现快速计算方法吗?

解决方法

假设只有3组点,则可以创建3个过程。

这3个过程将分别计算集合(1,2),(2,3)和(1,3)之间的每对点之间的距离。

通常,如果有n集,那么我们可以生成带有min(num_processor,n*(n-1) / 2)个子进程的进程池以获得最大的并行度,其中num_processor是电脑。

不是我们需要多处理而不是多线程,因为这是CPU绑定的操作,而不是IO绑定的操作。