我們有一個使用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