我想在数据集中相互比较。数据集是一个列表,有20000个成员,然后我的代码如下:
>>index = 0
>>for i in all:
index += 1
begin_time = time.time()
for j in all[index:]:
...
here are some data processing,then make comparison,
...
print time.time()-begin_time
然后随着时间的推移变慢,开始时每个循环需要0.1秒,而在半小时后,每个循环需要大约1秒。 有人说这是由于垃圾收集,但是当我在操作之前添加gc.disable()时,它仍然没有变得更好。 谁能告诉我该怎么办?
答案 0 :(得分:1)
你的算法是O(n^2)
,这非常糟糕。
如果可能,请考虑更改算法。
另外,请考虑使用itertools
而不是手动组合处理。
它将更具可读性,并且可能比您的方法更有效:
import itertools
for i,j in itertools.product(all, all):
print i,j