-2
我寫了下面的python代碼。我沒有任何需要內存的數組或列表,我不明白爲什麼會有內存溢出。爲什麼會增加內存?
con = db.connect('SentiWords.db')
cur = con.cursor()
cur.execute("DROP TABLE IF EXISTS Words")
cur.execute('''CREATE TABLE Words(word Text, type Text) ''')
infile = open("train_reviews.txt")
lines = infile.readlines()
stopwords = nltk.corpus.stopwords.words('english')
sentiment_words = dict()
counter =0
for line in lines:
words = nltk.word_tokenize(line.decode("UTF-8"))
words = [ w for w in words if w.lower() not in stopwords]
for word in words:
counter_sent = 0
counter_obj = 0
check = swn.senti_synsets(word)
for i in range(0,len(check)):
if check[i].pos_score() < check[i].obj_score() and check[i].neg_score() < check[i].obj_score():
counter_obj +=1
else:
counter_sent +=1
if counter_obj < counter_sent:
cur.execute('''SELECT type FROM Words WHERE word=? ''', [word])
data=cur.fetchall() #extract frequency
if len(data) == 0: #if there isn't any frequency
cur.execute("INSERT INTO Words VALUES(?,?)", (word,"no-obj"))
if counter % 1000 == 0:
con.commit()
con.close()
con = db.connect('SentiWords.db')
cur = con.cursor()
print counter
counter +=1
con.commit()
con.close()
我想從評論中找到所有具有情感含義的單詞。因此,我決定使用sentiwornet來比較評論中的所有單詞,並將具有情感意義的單詞保留在數據庫中。你能否讓我知道哪裏出了問題?
您是否介意包含錯誤信息,以便我們可以更好地幫助您? – mmenschig
我沒有收到錯誤消息,因爲我有足夠的內存來保存所需的所有數據,但是我看到任務管理器,並且內存增加了,沒有任何理由!感謝您的回覆 –
如果我正確理解了您的話,您並沒有真正遇到按定義「溢出」。 Python是一種垃圾收集語言,因此內存使用量不是確定性的。您正在創建佔用空間的對象,並且垃圾收集只能在按空間時運行,因此會導致永久增加內存使用量。 – Cu3PO42