【发布时间】:2020-08-11 21:50:00
【问题描述】:
在我的问题中,二维空间中有多组点。
即)第1组10分,第2组10分,第3组10分。
我需要计算每组中点之间的所有距离。 即)
距离(1,2,1,1):组1中的点1与组2中的点1之间的距离
距离(1,2,1,2):组1中的点1与组2中的点2之间的距离
距离(1,2,1,3):组1中的点1和组2中的点3之间的距离
....
distance(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])
一个人建议我......“使用多个线程(组的相同数量)和类,并用一个线程计算单个组的所有距离”但我不知道该怎么做。
有人可以帮助我使用多线程的快速计算方法或任何建议吗?
【问题讨论】:
-
在多线程之前,我会先尝试 numpy,然后再尝试 numpy 和 numba 。这是 numba 有很大帮助的那种东西。关于堆栈溢出的话题有很多讨论,例如:stackoverflow.com/questions/56126913/…。同样,在一个线程很快之后,如果速度增益不够,您可以随时查看多线程。
-
多线程实际上会使其更快吗?在this question 中提到了 CPython 的全局解释器锁,以及在 CPU 密集型任务中使用多线程不会提高性能。相反,建议使用多个进程。
标签: python multithreading loops concurrency distance