2013-03-26 17 views
1

我將有一個生成100萬個的獨立按鍵的程序,並且每個按鍵都有它(最多4個位數)關聯的值。然後我希望能夠儘可能快地訪問這些數據,以便我可以查找關鍵字並獲得它的價值。理想情況下,每秒至少有一百萬次。是否有可能在Python中實現大量的查找表(1億個+鍵)?

假設正常的計算能力,這甚至可能嗎?我只是將它創建爲字典還是應該開始學習數據庫等?

凡是點我在正確的方向將是一個巨大的幫助。

+1

這似乎更適合於一個簡單的數據庫。 ..但可能可能(與〜足夠的RAM) – 2013-03-26 02:38:21

+3

什麼阻止你簡單地嘗試最簡單的方法看到它適合你? – 2013-03-26 02:39:32

+0

也許是[Berkeley DB]的工作(http://docs.python.org/2/library/bsddb.html)? – detly 2013-03-26 03:22:35

回答

3

快速數學說,你不能做到這一點的內存Python中的32位系統上。 10個鍵會給你每個鍵只有30個字節,如果你有3 GB的地址空間可用。

在64位系統中,一個鍵和值的開銷將至少佔用:每次指針

  • 8個字節中的桶,和每一個指針的鍵和值,
  • 大概28個字節爲每個鍵和值(sys.getsizeof(0)給我28 64位系統)

所以我們的估計是,它將至少需要7.2 GB的內存。你可以做到這一點,但你可能會得到不可接受的表現。我推薦使用像京都內閣這樣簡單的東西。

1

我沒有足夠的內存來測試100M,但我產生5000萬的項目字典()和0.25秒跑出百萬查找我的筆記本上。你在球場上。

import time 

d = dict((k,k) for k in range(5*10**7)) 
time.sleep(2) # let system settle 
print('start') 
start = time.time() 
for i in range(10**6): 
    x = d[i] 
print(time.time() - start) 

給我

start 
.25 
相關問題