作者chigi (,L>)
看板Python
标题Re: [讨论] 过滤资料(多重条件)
时间Wed Aug 3 13:38:58 2011
我的想法是,对於读取时间而言,
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
1F:推 suzuke:推! 08/03 13:51
2F:推 ya790206:mmap,ramdisk,ssd,可增加io速度的方法 08/03 15:00
3F:→ chigi:其实最後一句话我原本想说: 又想不花钱不改程式是没可能的XD 08/03 15:30
4F:推 kdjf:在linux上,有tmpfs可用 08/03 20:21
5F:推 josefy:感谢您精辟的分析 08/03 20:43