該程序:內存錯誤與函數調用大量參數
這是一種試圖被賦予的句子(種子庫)和詞的對字典的開始的話(對的列表之後創建一個亂碼聲明的程序),其中包含來自文本文件的關於哪些詞遵循的信息。
一個text.txt文件包含'This is a cat。'的例子。他是一隻狗。'將意味着我們會輸入以下內容:
seedBank = ['This', 'He']
pairs = { 'This':['is'],'is':['a','a'],'a':['cat','dog'],'He':['is'] }
因此該函數使用這些輸入來創建一個隨機生成的文章,使模糊的意識,因爲它遵循一個半語法正確的格式。
def gibberish_sentence(seedBank, pairs):
gibSentence = []
gibSentence.append(random.choice(seedBank)) #random seed
x = gibSentence[0]
while(pairs.get(x)is not None): #Loop while value x is a key in the dictionairy
y = random.choice(pairs.get(x)) #random value of key x
gibSentence.append(y) #random value is added to main string
x = y #key x is reset to y
return ' '.join(gibSentence) #String
該問題:
這個程序能正常工作用於使小這樣的句子具有一組限定的random.seed(值)上面的一個,但是它不能與給定一組時返回一個存儲器錯誤輸入(seedBank和pair)非常大。我的問題是,這個程序有什麼問題可能會導致它在處理較大參數時遇到問題?
注意這些參數實際上並不是很大,我沒有文本文檔,但它不會太大以至於沒有足夠的內存。
錯誤代碼:
太謝謝你了。
已解決:謝謝!這個問題已經解決了,事實上這是造成問題的一個條件,這是因爲它循環遍歷整個文本,而不僅僅是當它到達一個具有完整或問號的單詞時結束。實質上,這導致它過載記憶,但謝謝大家幫忙!
多大的文本文件?在KB的順序? MB? GB?另外,我認爲我們需要看到調用代碼 - 我敢打賭,您意外地製作了佔用大量內存的副本。 – 2015-03-19 06:36:38
不幸的是,這是一個自動化的測試系統,但我通過電子郵件發送給我測試的人,所以我可以手動檢查它,我認爲這個問題可能與下面提到的無限循環有關,但我會考慮到這一點。 該文本文件只有9.5KB,所以有些事情是非常錯誤的! – Finn 2015-03-19 06:53:03
謝謝!問題得到了解決,事實上這是一種導致問題的條件,這是因爲它循環遍歷整個文本,而不僅僅是當它到達一個具有完全停頓或問號等的詞時結束。 本質上,這導致它以超負荷的記憶,但謝謝大家在這裏幫助! – Finn 2015-03-19 08:48:02