import select import socket from PySide2 import QtCore class Test: def on_read(self): print('on read') def on_write(self): print('on write') def on_error(self): print('on error') def create_connection(self): self.sock = socket.socket() print(self.sock) fd = self.sock.fileno() self.sock.setblocking(False) try: self.sock.connect(('0.0.0.0', 1234)) except BlockingIOError: pass self.read_notifier = QtCore.QSocketNotifier( fd, QtCore.QSocketNotifier.Read) self.read_notifier.activated.connect(self.on_read) self.write_notifier = QtCore.QSocketNotifier( fd, QtCore.QSocketNotifier.Write) self.write_notifier.activated.connect(self.on_write) self.error_notifier = QtCore.QSocketNotifier( fd, QtCore.QSocketNotifier.Exception) self.error_notifier.activated.connect(self.on_error) def on_timeout(self): timeout = 0.1 fd = self.sock.fileno() r, w, e = select.select([fd], [fd], [fd], timeout) print(r, w, e) def run(self): app = QtCore.QCoreApplication() self.create_connection() self.timer = QtCore.QTimer() self.timer.timeout.connect(self.on_timeout) self.timer.start(1000) app.exec_() def main(): Test().run() if __name__ == '__main__': main()