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

看板Python作者 (醉落~最弱)時間14年前 (2011/08/02 20:49), 編輯推噓0(0016)
留言16則, 2人參與, 最新討論串10/11 (看更多)
抱歉又來打擾了! 斗膽一問 除了.findall以及grep之外 是否有其他更有效率的搜尋方式 目前我寫的程式常常得搜尋約一百多個文字檔 效率真的很差 抓出一個檔案中 欲取的數據 得要一秒多 有時候要抓上千筆 ... 那會等很久的 . . . 不知道是否有方式可以提升效能? 如果能夠自己製作一個比較有效率的subroutine也可考慮 但不太確定這樣子的話要怎麼寫 感謝您的閱讀 ※ 引述《suzuke (suzuke)》之銘言: : ※ 引述《josefy (醉落~最弱)》之銘言: : : 感謝S兄的解答 小弟我遇到另一個困難 : : 就在把寫好的程式由linux拿到Windows上跑的時候 : : 搜尋不出任何結果 我猜是因為windows灌的python不支援grep : grep本身不是python的指令 : 而是在linux shell底下的一個程式 : 因為是利用python的command模組來調用shell裡的指令來用 : 所以當然在windows底下沒辦法使用 : 不過我印象中python好像也有類似grep的模組(不太確定~) : : 因此後來改回 .findall這個方法 結果也可以用了 : : 但想要請問的是 如果要找的東西放在一個list裡面 : : a=['A','B','C','D','E'] : : 然後我希望能夠疊代進入.findall裡面 : : result=re.findall('(.*)a[index](.*)',data,re.I) : ^^^^^^^^^^^^^^^^基本上這邊給的就是一個字串 : 所以你應該去讀一下有關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取代)相加成為一個新的字串 : 如果只是很簡單的字串可以這樣用 : 不過基本上還是建議也把正規表示法學好, 會有很大的幫助 : : 似乎不太可行 請問有甚麼方法嗎 : : 應該不會需要寫五次 fe.findall吧? ^.^" 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.37.166.88

08/02 21:17, , 1F
如果你的cpu是多核心, 可以考慮多執行緒或多進程來徹底運用
08/02 21:17, 1F

08/02 21:19, , 2F
cpu的運算能力. 又或者懂C的話也可以用C來改寫搜尋那一部份
08/02 21:19, 2F

08/02 21:20, , 3F
的code
08/02 21:20, 3F

08/02 21:22, , 4F
不過我想如果連本來grep都覺得慢的話, 用C改寫code這一部份
08/02 21:22, 4F

08/02 21:22, , 5F
應該沒有什麼效果
08/02 21:22, 5F

08/02 21:23, , 6F
如果是四核心 那表示一次可以搜尋四個檔案嗎?
08/02 21:23, 6F

08/02 21:23, , 7F
抱歉問得很外行 ^^" (苦笑)
08/02 21:23, 7F

08/02 21:29, , 8F
那就要看你的code怎麼寫囉, 搜尋四個檔案是可以的
08/02 21:29, 8F

08/02 21:29, , 9F
有興趣的話可以去查一下multiprocessing這個模組
08/02 21:29, 9F

08/02 21:34, , 10F
如果資料具有順序性核心一比較慢執行完 但要較先執行完的
08/02 21:34, 10F

08/02 21:34, , 11F
核心二先寫入檔案 這也是可以在程式中限制的吧?
08/02 21:34, 11F

08/02 21:41, , 12F
當然, 不過這就要花時間去研究一下該怎麼寫了
08/02 21:41, 12F

08/02 22:03, , 13F
稍微查了一下 這部分感覺頗深的 有點難以入門的感覺
08/02 22:03, 13F

08/03 09:26, , 14F
如果你的系統是32-bit那就可以用psyco試試看, 可能是一個
08/03 09:26, 14F

08/03 09:26, , 15F
可以嘗試的方法
08/03 09:26, 15F

08/03 09:29, , 16F
08/03 09:29, 16F
文章代碼(AID): #1ED_98XF (Python)
討論串 (同標題文章)
文章代碼(AID): #1ED_98XF (Python)