Python 如何防止pyqt程序在获取数据时冻结?

Python 如何防止pyqt程序在获取数据时冻结?,python,qthread,Python,Qthread,我的程序使用我从pypi下载的“speedtest”模块测试我的网速。它按预期工作,但我面临的问题是,GUI冻结,直到所有内容都被收集并显示出来,而不是逐个显示结果。这是我的程序代码 from PyQt4 import QtGui from PyQt4. QtCore import SIGNAL import Speed2 import sys import speedtest class Speed(QtGui.QDialog, Speed2.Ui_Dialog): def __in

我的程序使用我从pypi下载的“speedtest”模块测试我的网速。它按预期工作,但我面临的问题是,GUI冻结,直到所有内容都被收集并显示出来,而不是逐个显示结果。这是我的程序代码

from PyQt4 import QtGui
from PyQt4. QtCore import SIGNAL
import Speed2
import sys
import speedtest

class Speed(QtGui.QDialog, Speed2.Ui_Dialog):
    def __init__(self):
        QtGui.QDialog.__init__(self)
        self.setupUi(self)

        self.waitingSlot.setText('Testing your internet speed......................')

        try:
            speed = speedtest.Speedtest()
            details = speed.config
            self.providerSlot.setText('%(isp)s ' %details ['client'])
            #server
            self.waitingSlot.setText('Selecting best server based on ping......................')
            speed.get_best_server()
            #host
            host =  speed.get_best_server()
            self.serverSlot.setText('%(sponsor)s (%(name)s) [%(d)0.2f km] '%host)
            #ping
            self.pingSpeed.setText('%(latency)d' % host)
            #download
            self.waitingSlot.setText('Testing your download speed')
            download  = speed.download()
            down  = (download / 1000.0 /1000.0)
            if down > 99:
                downlink  = round(down, 1)
                self.downLink.setText(str(downlink))
            else:
                downlink = round(down, 2)
                self.downLoad.setText(str(downlink))
            #upload
            self.waitingSlot.setText('Testing your upload speed......................')
            upload = speed.upload()
            up  = (upload / 1000.0/ 1000.0)
            if up > 99:
                uplink = round(up, 1)
                sellf.upLoad.setText(str(uplink))
            else:
                uplink = round(up, 2)
                self.upLoad.setText(str(uplink))            
            self.waitingSlot.setText('Testing complete!!!!')

        except:
            self.waitingSlot.setText('Error in network connection') 


def main():
    app = QtGui.QApplication(sys.argv)
    gui = Speed()
    gui.show()
    app.exec_()

if __name__ == '__main__':
    main()

只有
speedtest
提供了下载/上传速度的流式传输方法时,才能执行此操作。只有
speedtest
提供了下载/上传速度的流式传输方法时,才能执行此操作。