PySide2 seems a bit slow
-
I try to migrate from PyQt5 to PySide2 and I see PySide2 bit slower than PyQt5 on multithreading context switching.
I've wrtitten a small programm and I see PySide2 up to 4 times slower
#!/usr/bin/python3 # -*- coding: utf-8 -*- import sys from PySide2.QtWidgets import QMainWindow, QPushButton, QApplication from PySide2.QtCore import QThread, Signal import datetime import time class Proc(QThread): procEvent = Signal() def __init__(self, parent=None): QThread.__init__(self, parent=None) self.__flag = False def wakeup(self): self.__flag = False def __suspend(self): self.__flag = True while self.__flag: pass def isSuspended(self): return self.__flag def run(self): a = datetime.datetime.now() self.procEvent.emit() self.__suspend() b = datetime.datetime.now() print(b-a) class Example(QMainWindow): def __init__(self): super().__init__() self.initUI() def initUI(self): self.flag = True btn1 = QPushButton("Button 1", self) btn1.move(30, 50) self.procThread = Proc() self.procThread.procEvent.connect(self.procSlot) btn1.clicked.connect(self.buttonClicked) self.statusBar() self.setGeometry(300, 300, 290, 150) self.setWindowTitle('Event sender') self.show() def procSlot(self): self.waitProcThreadSleep() self.procThread.wakeup() def waitProcThreadSleep(self): while not self.procThread.isSuspended(): pass def buttonClicked(self): self.procThread.start() if __name__ == '__main__': app = QApplication(sys.argv) ex = Example() sys.exit(app.exec_()) # import sys # from PyQt5.QtWidgets import QMainWindow, QPushButton, QApplication # from PyQt5.QtCore import QThread, pyqtSignal # # # import datetime # import time # # class Proc(QThread): # # procEvent = pyqtSignal() # # def __init__(self, parent=None): # QThread.__init__(self, parent=None) # # self.__flag = False # # def wakeup(self): # self.__flag = False # # def __suspend(self): # self.__flag = True # while self.__flag: # pass # # def isSuspended(self): # return self.__flag # # def run(self): # a = datetime.datetime.now() # self.procEvent.emit() # self.__suspend() # b = datetime.datetime.now() # print(b-a) # # class Example(QMainWindow): # # def __init__(self): # super().__init__() # # self.initUI() # # # def initUI(self): # # self.flag = True # # btn1 = QPushButton("Button 1", self) # btn1.move(30, 50) # # self.procThread = Proc() # self.procThread.procEvent.connect(self.procSlot) # # btn1.clicked.connect(self.buttonClicked) # # # self.statusBar() # # self.setGeometry(300, 300, 290, 150) # self.setWindowTitle('Event sender') # self.show() # # # def procSlot(self): # self.waitProcThreadSleep() # self.procThread.wakeup() # # def waitProcThreadSleep(self): # while not self.procThread.isSuspended(): # pass # # def buttonClicked(self): # self.procThread.start() # # # # # if __name__ == '__main__': # # app = QApplication(sys.argv) # ex = Example() # sys.exit(app.exec_())