2014-02-12 54 views
0

該代碼將加載串10000個實例(具有相同的內容):Python字符串和內存優化

lst = [] 
for i in xrange(0, 10000): 
    with open ('data.txt', 'r') as datafile: 
     lst.append(str(datafile.read())) 
print(lst) 

只有後上方的一個或之前加入的代碼,我wan't爲具有相同的結果如此。

lst = [] 
with open ('data.txt', 'r') as datafile: 
    s = str(datafile.read()) 
    for i in xrange(0, 10000): 
     lst.append(s) 
print lst 

這將只加載1個字符串實例。 =>更少的內存使用量。

在java中,有String.intern()?我尋找一個python等價物。

回答

1

你可以用intern()來做同樣的事情。

在「實習」的字符串表中輸入字符串,返回字符串實習 - 這是本身或複印件。實習字符串對於在字典查找中獲得一些性能很有用 - 如果字典中的密鑰被實施並且查找密鑰被實施,則可以通過指針比較而不是字符串比較來完成關鍵比較(哈希後)。通常情況下,Python程序中使用的名稱會自動實現,並且用於保存模塊,類或實例屬性的字典具有實際的密鑰。

存儲返回值:

lst = [] 
for i in xrange(0, 10000): 
    with open ('data.txt', 'r') as datafile: 
     lst.append(intern(datafile.read())) 
print(lst) 
+0

我不明白,我沒有之前發現了這個,這是相同的名稱作爲Java的:) – Toilal

1

在java中,存在中的String.intern()?我尋找一個python等價物。

它在Python中被稱爲intern(),它是一個內置函數。

如需進一步討論,請參見Python string interning