[Tutor] pattern matching is too slow

Alan G alan.gauld at freenet.co.uk
Fri Aug 12 10:54:51 CEST 2005


while True:
 try:
    temp = self.mplayerOut.readline()
       print temp
       if re.compile("^A:").search(temp):

The point of re.compile is to compile the re once *outside* the loop.
Compiling the re is slow so you should only do it outside.

As a first step replace re.compile with re.search

       if re.search("^A:",temp):
          print "abc"
 except StandardError:
    break

As a second step move the compile before the loop

reg = re.compile("^A:")

Then inside the loop use the compiled expression

       if reg.search(temp):

The first step should be faster, the second step faster still.

Finally, lookaing at tyour regex you might be better using 
a simple string method - startswith()

       if temp.startswith("A"):

That should be even faster still.

HTH,

Alan G
Author of the Learn to Program web tutor
http://www.freenetpages.co.uk/hp/alan.gauld


More information about the Tutor mailing list