https://www.2bitcoder.com/article/multithreading-pyqt-applications-with-qthreadpool/