Ich möchte fragen, wie man eine große Datei von der Festplatte zu lesen und die PyQt4 UI reaktionsfähig (nicht blockiert) zu halten. Ich hatte das Laden der Datei in eine QThread-Unterklasse verschoben, aber mein GUI-Thread wird eingefroren. Irgendwelche Vorschläge? Ich denke, es muss etwas mit der GIL sein, aber ich weiß nicht, wie ich es sortieren kann?
EDIT: Ich verwende vtkGDCMImageReader aus dem GDCM-Projekt, um ein Multiframe-DICOM-Bild zu lesen und es mit vtk und pyqt4 anzuzeigen. Ich tue dies in einem anderen Thread (QThread) laden, aber meine app einfrieren, bis das Bild geladen wird. hier ist ein Beispiel-Code:
class ReadThread(QThread):
def __init__(self, file_name):
super(ReadThread, self).__init__(self)
self.file_name = file_name
self.reader.vtkgdcm.vtkGDCMImageReader()
def run(self):
self.reader.SetFileName(self.file_name)
self.reader.Update()
self.emit(QtCore.SIGNAL('image_loaded'), self.reader.GetOutput())