liveSocket, address = hostSocket.accept() TARGET_FPS = 30 TIME_FRAME = 1 / TARGET_FPS frame = 0 start = time.perf_counter() while not self.livestreamEvent.is_set(): w, h, data = self.screenHandler.TakeScreenshotAsBytes(960, 540) state = SendMessage(liveSocket, str(w) + " " + str(h) + " " + str(frame + 1), data) if not state: self.HandleMessageFault() break frame += 1 targetTime = frame * TIME_FRAME end = time.perf_counter() elapsed = (end - start) waitTime = targetTime - elapsed if targetTime >= elapsed else 0.0 time.sleep(waitTime) liveSocket.close() if __name__ == "__main__": DEBUG = True a = ScreenHandler() m, n = a.Execute("", "")