Re: [討論] 過濾資料(多重條件)

看板Python作者 (,L>)時間14年前 (2011/08/03 13:39), 編輯推噓4(401)
留言5則, 5人參與, 最新討論串11/11 (看更多)
我的想法是,對於讀取時間而言, IO時間絕對比computing長很多, 基於這個想法,我認為你應該在每次執行程式的時候就讀入所有檔案 或是建好所有檔案的index,來避免下次讀取時又要重新搜尋檔案的時間 舉個例子來說,譬如我要在檔案群中搜尋patternA這樣的資訊 解決這樣的問題可以有幾種做法,   1.打開所有的檔案,一筆一筆檢驗   2.將所有檔案資料讀入程式,在程式中檢驗   3.... 我們比較前兩種,對於單次執行時間是相同的, 同樣讀取檔案同樣做搜尋 但是當你要在同一群資料中搜尋不同資訊時 第二的方法的長處就顯現出來,它可以省下每次你要讀取檔案做IO的時間 當然還有其他做index的方法,不過我不清楚你的程式內容沒辦法分享我自己的意見 但是我想表達的是,當你期望每次讀取都去硬碟搬東西, 又期望你的程式執行時間短,是無法做到的 -- 小小看法 ※ 引述《josefy (醉落~最弱)》之銘言: : 抱歉又來打擾了! 斗膽一問 : 除了.findall以及grep之外 是否有其他更有效率的搜尋方式 : 目前我寫的程式常常得搜尋約一百多個文字檔 效率真的很差 : 抓出一個檔案中 欲取的數據 得要一秒多 : 有時候要抓上千筆 ... 那會等很久的 . . . : 不知道是否有方式可以提升效能? : 如果能夠自己製作一個比較有效率的subroutine也可考慮 : 但不太確定這樣子的話要怎麼寫 : 感謝您的閱讀 : ※ 引述《suzuke (suzuke)》之銘言: : : grep本身不是python的指令 : : 而是在linux shell底下的一個程式 : : 因為是利用python的command模組來調用shell裡的指令來用 : : 所以當然在windows底下沒辦法使用 : : 不過我印象中python好像也有類似grep的模組(不太確定~) : : ^^^^^^^^^^^^^^^^基本上這邊給的就是一個字串 : : 所以你應該去讀一下有關python字串的使用方法 : : 舉例來說, 如果你有五個字串分別是dir_A, dir_B, dir_C, dir_D, dir_E : : 那要怎麼用變數來簡化寫法勒 : : 就是 : : a = [ 'A', 'B', 'C', 'D', 'E'] : : for name in a: : : print "dir_" + name : : 這邊的"dir_a"是一個字串, 可以和另一個字串(由變數name取代)相加成為一個新的字串 : : 如果只是很簡單的字串可以這樣用 : : 不過基本上還是建議也把正規表示法學好, 會有很大的幫助 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.113.166.90

08/03 13:51, , 1F
推!
08/03 13:51, 1F

08/03 15:00, , 2F
mmap,ramdisk,ssd,可增加io速度的方法
08/03 15:00, 2F

08/03 15:30, , 3F
其實最後一句話我原本想說: 又想不花錢不改程式是沒可能的XD
08/03 15:30, 3F

08/03 20:21, , 4F
在linux上,有tmpfs可用
08/03 20:21, 4F

08/03 20:43, , 5F
感謝您精闢的分析
08/03 20:43, 5F
文章代碼(AID): #1EEDxqFX (Python)
討論串 (同標題文章)
文章代碼(AID): #1EEDxqFX (Python)