在我的问题中,在2D空间中有多组点。
即,第1组10分,第2组10分,第3组10分。
我需要计算每组中点之间的所有距离。即)
distance (1,2,1,1):组1中点1与组2中点1之间的距离
距离(1,2,1,2):组1中的点1与组2中的点2之间的距离
距离(1,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])有个人建议我这样做:“使用多个线程(组的相同数量)和类,并用一个线程计算单个组的所有距离”,但我不知道如何做到这一点。
有没有人可以帮助我多线程的快速计算方法或任何建议?
发布于 2020-08-12 09:59:15
假设只有3组点,您可以创建3个进程。
这3个过程将分别计算集合(1,2),(2,3)和(1,3)之间的每一对点之间的距离。
通常,如果有n集,那么我们可以生成一个带有min(num_processor, n*(n-1) / 2)子进程的进程池,以获得最大的并行度,其中num_processor是计算机中的物理核心数。
这并不是说我们需要多处理而不是多线程,因为这是一个CPU限制的操作,而不是IO限制的操作。
https://stackoverflow.com/questions/63366841
复制相似问题