QWebSocketServer到不同的线程

时间:2016-12-02 09:45:09

标签: qt user-interface websocket pyqt qthread

我有一个应用程序,我应该使用QWebSocketServer来接受和解析来自Bokeh应用程序的一些套接字消息。到目前为止我能够做到这一点,但现在我想将整个QWebSocketServer移动到另一个线程中,这样它就不会打扰主GUI。主要问题是QWebSocketServer无论如何影响GUI?

GUI是QWebSocketServer的父级,我无法将其移动到另一个线程。如果我继承了QThread类,这会工作吗?

我知道我不应该继承QThread类和重载run方法。我只是想知道这是否可能。

仅供参考:我在Raspberry pi中做了所有这些,而raspberry pi必须进行大量的数据收集。

1 个答案:

答案 0 :(得分:0)

我在没有父级的情况下初始化了QWebSocketServer并将其移动到另一个线程并且它工作正常。我不知道我是否做得对。

我这样做: -

    self.server = SocketServer()
    self.serverThread = QThread()
    self.server.moveToThread(self.serverThread)

此处SocketServer是继承QObject()的服务器类,其中定义了QWebSocketServer,没有任何父级。

以下是SocketServer类的简短摘录: -

    onMessageRecieved = pyqtSignal(str)
    serverObject = QWebSocketServer("My Server",QWebSocketServer.NonSecureMode)
    def __init__(self,parent=None):
        super().__init__(parent)
        self.server = QWebSocketServer(self.serverObject.serverName(),self.serverObject.secureMode(),parent)

并且不要忘记启动线程。