關於記憶體的占用和思路的拓展

2022-05-02 16:54:14 字數 1365 閱讀 7776

遇到乙個問題,題目是這樣的:

隨意寫乙個20行以上的檔案

執行程式,先將內容讀到記憶體中,

接收使用者輸入頁碼,每頁5條,僅輸出當頁的內容

先貼出我的**:

def func(page):  #

在函式中輸入頁碼

lis =

dic ={}

with open(

'03name

',encoding='

utf-8

') as f:

for i inf:#

把檔案中的每一行讀取出來,去掉前後空格及換行符,放入列表

count =0

while count < len(lis)/5 +1: #

給出乙個迴圈,限制條件是整數的頁碼+1

#這樣不管最後一頁有沒有內容都放入字典中

dic.setdefault(count + 1,lis[0+count*5:5+count*5]) #

切片把每一頁的內容都放入字典

count += 1

return

dic[page]

print(func(6))

再給出答案的**:

with open('

03name

',encoding='

utf-8

') as f:

l = f.readlines() #

直接讀每行內容放進列表

page_input = int(input('

輸入您要查詢的頁碼:'))

page,mod = divmod(len(l),5) #

除餘來獲取檔案內容的整數頁和剩餘幾行內容

ifmod:

page += 1 #

有餘數則頁碼+1

if page_input > page or page_input <0:

print('

輸入錯誤')

elif page_input == page and mod != 0: #

如果輸入的是最後一頁並且有餘數

for i in

range(mod):

print(l[(page_input - 1) * 5 + i])#

那麼列印列表中的剩餘行

else

:

for i in range(5):

print(l[(page_input - 1)*5 + i])#

這樣取值,而不用切片不占用記憶體

很明顯,答案表給出了另一種思路,並且這種思路只在記憶體中儲存存放了乙個包含檔案內容的列,節省了空間

關於占用過多記憶體的問題

經常看見有人問,mssql占用了太多的記憶體,而且還不斷的增長 或者說已經設定了使用記憶體,可是它沒有用到那麼多,這是怎麼一回事兒呢?首先,我們來看看mssql是怎樣使用記憶體的。最大的開銷一般是用於資料快取,如果記憶體足夠,它會把用過的資料和覺得你會用到的資料統統扔到記憶體中,直到記憶體不足的時候...

關於struct占用記憶體大小的幾點分析

struct占用記憶體空間分析 在初學c語言的時候,很多人都認為struct結構體占用記憶體空間的大小等於所有結構體成員各自所佔記憶體空間的總和,其實這種觀點是存在誤區的。舉乙個簡單的例子 include struct test int main void 程式執行的結果為4 注 我使用gcc進行編...

釋放SQL Server占用的記憶體

由於sql server對於系統記憶體的管理策略是有多少佔多少,除非系統記憶體不夠用了 大約到剩餘記憶體為4m左右 sql server才會釋放一點點記憶體。所以很多時候,我們會發現執行sql server的系統記憶體往往居高不下。這些記憶體一般都是sql server執行時候用作快取的,例如你執行...