PyQt5 UI "freezes" when updating it too quickly from another thread

Uhhhhhhhhhhhhhhhhh Ok so some basics. 1st of all, any interaction with widgets have to happen in main thread. So if you are changing slider value/etc. from daemon/worker thread. Then you are messing up Qt insides.

I would suggest that you use signals/slots. Here is a small example of it

class sliderUpdate(QObject):
    handleUpdate = Signal(int)
    def __init__(self):
        print "Current thread (Should be main thread ) : " QThread.currentThread()
        # Lets conect our signal to function/slot.
        self.handleUpdate.connect(self.doUpdate,Qt.QueuedConnection) # We force it in to QueuedConnection so that Qt pass the data from worker thread to Main thread.
        self.slider = QSlider()
                
    def doUpdate(self,val):
        print "Current thread (Should be main thread ) : " QThread.currentThread()
        self.slider.setValue(val)
        
    def processInThread(self):
        print "Current thread (Should be worker thread ) : " QThread.currentThread()
        self.handleUpdate.emit(10)

2nd. If VLC is sending updates A LOT per second. Then you may be bombarding Qt with refresh requests & lagging app. I would suggest implementing some sort of... delayed report... A sudo example :

timer = QElapsedTimer()
timer.start()
...
...
if timer.elapsed()>500:
   emit new Value:
   timer.restart() 
else:
   skip, emit on next call if timeout over 500 ms.