问题描述
在我的问题中,二维空间中有多组点。
即,第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绑定的操作。