我们有一个使用itertools.combinations()
的脚本,它似乎挂起的输入大小很大。Python的超时问题itertools.combinations()
我是一个相对缺乏经验的Python程序员,所以我不知道如何解决这个问题。有更合适的图书馆吗?或者有没有办法启用详细日志记录,我可以调试为什么方法调用挂起?
任何帮助,非常感谢。
[编辑]
def findsubsets(S,m):
return set(itertools.combinations(S, m))
for s in AllSearchTerms:
S.append(itemsize)
itemsize = itemsize + 1
for i in range (1,6):
Subset = findsubsets(S,i)
for sub in Subset:
for s in sub:
sublist.append(AllSearchTerms[s])
PComb.append(sublist)
sublist = []
'itertools.combinations(..)'本身是** lazy **。因此,它取决于**消费者对输出**做了什么...... –
正如前面的评论所述,结果取决于你对来自'itertools.combinations()'的返回值做了什么。如果您需要更多帮助,请向我们展示一个代码片段,其中显示您对结果和结果挂起的操作。请参见[如何创建最小,完整和可验证示例](http://stackoverflow.com/help/mcve)。 –
此外,您的算法的组合数量[可能是_huge; _](https://en.wikipedia.org/wiki/Binomial_coefficient#Binomial_coefficients_as_polynomials)可能是正确的,只是工作时间超出您的预期。 – 9000