I use the following piece of code to read the serial port until i get a terminating character.
"""Read until you see a terminating character with a timeout"""
    response=[]
    byte_read=''
    break_yes=0
    time_now = time.clock()
    while ((not (byte_read=='\r') ) and (break_yes==0)):
        byte_read = self.ser.read(1)
        if (not(len(byte_read)== 0) and (not (byte_read =='\r'))):
            response.append(byte_read)
        if ( time.clock() - time_now > 1 ):
            if self.DEBUG_FLAG: 
                print "[animatics Motor class] time out occured. check code"
            break_yes=1
    if break_yes==0:
        return ''.join(response)
    else:
        return 'FAIL'
This works well but because of the while loop, the cpu resources are taken up.
I think that having a blocking read(1) with a timeout will save some of the cpu. The flag i am looking for C is "MIN == 0, TIME > 0 (read with timeout)" in termios
i am looking for a similar flag in Python.
I could also use the io.readline to read till i get '\r', but i want to stick to pyserial as much as possible without any other dependency.
Would greatly appreciate advice. Do let me know if i should do it in a completely different way either too.
Thanks,
                        
You should read the documentation of Pyserial: it clearly states that a timeout of 0 as you pass it to the constructor will turn on non-blocking behaviour:
http://pyserial.sourceforge.net/pyserial_api.html#classes
Just get rid of the timeout parameter, and you should be set.