<div><span class="gmail_quote">On 7/19/07, <b class="gmail_sendername">Gordon Airporte</b> <<a href="mailto:JHoover@fbi.gov">JHoover@fbi.gov</a>> wrote:</span>
<blockquote class="gmail_quote" style="PADDING-LEFT: 1ex; MARGIN: 0px 0px 0px 0.8ex; BORDER-LEFT: #ccc 1px solid">I have some code which relies on running each line of a file through a<br>large number of regexes which may or may not apply. For each pattern I
<br>want to match I've been writing<br><br>gotit = mypattern.findall(line)</blockquote>
<div> </div>
<div> </div>
<div>Try to use iterator function finditer instead of findall. To see the difference run below code by calling findIter or findAll function one at a time in for loop.  You can have achieve atleast 4x better performance. 
</div>
<div> </div>
<div>-----------------------------------------------------------------------------------</div>
<div>import re<br>import time</div>
<p>m = re.compile(r'(\d+/\d+/\d+)')<br>line = "Today's date is 21/07/2007 then yesterday's  20/07/2007"</p>
<p>def findIter(line):<br>    m.finditer(line)<br>    glist = [x.group(0) for x in g]<br></p>
<p>def findAll(line):<br>    glist = m.findall(line)</p>
<p>start = time.time()<br>for i in xrange(1000000):<br>    #findIter(line)<br>    findAll(line)<br>end = time.time()</p>
<p>print end-start</p>
<p>--------------------------------------------------------------------------------------------------------</p></div>