The answer is that it depends on what you are actually trying to accomplish. If there is nothing else to be done on the Arduino then it is fine to have it sit and wait; on the other hand if there is nothing else for the python script to do then it is fine for it to sit and wait, but there is no reason for both of them wait.
You don't need to deal with the timing delay in python if the Arduino is
delaying. According to the documentation
readline will wait until it has received a value or until the timeout is reached. That said, I would make the timeout slightly longer than the delay on the Arduino side of things.
readline will block your program from doing anything else while it waits. As such, It is pretty useful to explore python
threading when you are writing a program which collects data over a serial stream unless the program is only collecting data.
If there is other stuff to be done on the Arduino (perhaps if you are doing some filtering of the temperature data using the Arduino so as to reduce noise) then it might make more sense for it to push data to the serial stream at the end of each
loop, and for the python script to only read the data every 5 seconds. In this case you could have python
sleep and use no delay (or a shorter delay) on the Arduino. You can achieve this behavior without resorting to using
sleep by using a
timer object to periodically call a function that
opens the serial stream (possibly flush it), reads the data, processes it, and closes the serial stream.