我有一个应用程序,我应该使用QWebSocketServer来接受和解析来自Bokeh应用程序的一些套接字消息。到目前为止我能够做到这一点,但现在我想将整个QWebSocketServer移动到另一个线程中,这样它就不会打扰主GUI。主要问题是QWebSocketServer无论如何影响GUI?
GUI是QWebSocketServer的父级,我无法将其移动到另一个线程。如果我继承了QThread类,这会工作吗?
我知道我不应该继承QThread类和重载run方法。我只是想知道这是否可能。
仅供参考:我在Raspberry pi中做了所有这些,而raspberry pi必须进行大量的数据收集。
答案 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)
并且不要忘记启动线程。