2014-04-01 42 views
-2

我使用的是一塊itertools代碼(感謝SO!)看起來像:這是否需要更好的代碼或更好的硬件?

# Break down into selectable sub-groups by unit name 
groups = {k: [b for b in blobs if b.Unit==k] for k in ['A','B','C','D','E','F']} 
# Special treatment for unit F: expand to combination chunks of length 3 
groups['F'] = combinations(groups['F'], 3) 
# Create the list of all combinations 
selected = list(product(*groups.values())) 

的問題是,我上面的blobs列表包含約400個項目,這意味着結果列表對象,selected,將有幾萬億次可能的組合(如15x15x15x15x15x15x15x15x15)。我對編程並不陌生,但對於使用大型數據集來說,我是新手。我應該尋找什麼樣的硬件來處理這樣的itertools?有沒有合理價位的機器可以處理這種類型的東西?我顯然已經將我的Python技能超越了我可靠的iMac。 。 。

+1

我認爲,對於如此多的數據,你會希望使用Python以外的其他東西,比如C程序,它會更加高效。 –

+1

這對純Python來說不​​是一個好問題。你可能想看看寫一些擴展名,以更高效和更快速的方式完成工作。 – ebarr

+1

你打算如何處理你的萬億物品是什麼?如果你想迭代它們進行單獨的處理,'itertools.product'可能實際上非常高效(不要將它包裝在'list'中,只需使用迭代器)。但是如果你耗費了大量時間,無論使用什麼樣的系統和軟件,它可能需要很長時間。 – Blckknght

回答

1

如果您可以放棄實現列表,那麼代碼將在任何計算機上按原樣運行。這是發電機的力量。