timer = QtCore.QTimer()
timer.timeout.connect(update)
timer.start(50)
If you go the timer route you may also want to change your pass inside the while loop to a return so that the Qt thread doesn't get locked up when serial data isn't present.
Another tip would be to think about "blocking the pipes" with your flow of serial data. That is, if your arduino is trying to continuously pump data at some rate, you should try to handle it at that rate on the computer side. Either call your QTimer more often than the arduino is sending data, and/or in your _update() method, run a loop to completely drain all waiting serial data before returning. Sometimes this isn't a problem, but I find Windows in particular has some terrible serial buffering/performance issues that can cause strange behaviour if your thread stalls for a bit for whatever reason.
You may eventually also want to add some try/except blocks to handle failures reading from the serial device, or corruption etc that stops you from decoding the two floats from the received string.