華為手機(jī)內(nèi)存擴(kuò)容教程 Python有什么辦法可以讓程序去遍歷比電腦內(nèi)存大的數(shù)據(jù)?
Python有什么辦法可以讓程序去遍歷比電腦內(nèi)存大的數(shù)據(jù)?您好,很高興在這里交流。具體要看什么樣的數(shù)據(jù)啦,如果是大數(shù)據(jù)量的Excel數(shù)據(jù),Python有天然的數(shù)據(jù)處理庫pandas。它具備Excel表
Python有什么辦法可以讓程序去遍歷比電腦內(nèi)存大的數(shù)據(jù)?
您好,很高興在這里交流。
具體要看什么樣的數(shù)據(jù)啦,如果是大數(shù)據(jù)量的Excel數(shù)據(jù),Python有天然的數(shù)據(jù)處理庫pandas。
它具備Excel表的一切功能,從多表拼接,合并,查找,替換,到數(shù)據(jù)透視表,無所不能,特別適合千萬級(jí)數(shù)據(jù)記錄的大數(shù)量的處理。
一切順利,加油。
c語言的指針可以遍歷內(nèi)存嗎?
理論上可以,但實(shí)際操作的時(shí)候會(huì)遇到問題,因?yàn)槟壳暗木幾g器都是在操作系統(tǒng)之上運(yùn)行的,受操作系統(tǒng)統(tǒng)一控制,每次編譯運(yùn)行你的程序時(shí),操作系統(tǒng)會(huì)分配給你當(dāng)前的程序一塊虛擬內(nèi)存,你的代碼中寫的內(nèi)存地址都是以這塊虛擬內(nèi)存為參照的,不能超出這個(gè)虛擬內(nèi)存去訪問其他區(qū)域。
挑戰(zhàn)程序員同學(xué),如何只用2GB內(nèi)存從20/40/80億個(gè)整數(shù)中找到出現(xiàn)次數(shù)最多的數(shù)?
一、用4字節(jié)表示的整數(shù)個(gè)數(shù)為2^32≈40億,而用2字節(jié)表示的無符號(hào)整數(shù)個(gè)數(shù)為2^16≈6萬。
二、2G=2^31B≈20億字節(jié)。
三、要找出出現(xiàn)次數(shù)最多的數(shù),則應(yīng)記錄每個(gè)數(shù)出現(xiàn)的次數(shù),最快的方法是在內(nèi)存中將每個(gè)數(shù)出現(xiàn)的次數(shù)記錄下來,記錄的方法則是內(nèi)存地址對(duì)應(yīng)數(shù),相應(yīng)地址的內(nèi)存單元記錄次數(shù),但2G內(nèi)存以字節(jié)為單位僅能記錄20億個(gè)數(shù),且每個(gè)數(shù)出現(xiàn)的次數(shù)大于255將會(huì)出現(xiàn)溢出風(fēng)險(xiǎn)。因此,這一方案不可取。
四、這樣只能將每個(gè)次出現(xiàn)的次數(shù)記錄在磁盤上。這樣在磁盤上建一個(gè)16G的文件,每4字節(jié)對(duì)應(yīng)一個(gè)整數(shù),可對(duì)應(yīng)40億個(gè)整數(shù),并用于記錄相應(yīng)整數(shù)的出現(xiàn)的次數(shù)。
1、將文件初始化。
2、依次讀取數(shù)據(jù),并用無符號(hào)整數(shù)記錄在磁盤文件中,如出現(xiàn)溢出,則該數(shù)為次數(shù)最多的數(shù)。
3、從文件中讀取各數(shù)出現(xiàn)的次數(shù),用一個(gè)變量A記錄最高次數(shù),再用一個(gè)變量B記錄最高次數(shù)出現(xiàn)的數(shù)據(jù)個(gè)數(shù),要用個(gè)文件依次記錄最高次數(shù)出現(xiàn)的數(shù)。當(dāng)最高次數(shù)增加時(shí),A 1,B置1,文件中寫入該數(shù),同次數(shù)的數(shù)出現(xiàn)時(shí),B 1,文件相應(yīng)位置寫入該數(shù),直到全部讀完。
這樣根本不需2G內(nèi)存。