[FOSSGIS-Talk] QGIS, Python und Threads

Matthias Ludwig kaotika at gmx.de
Do Jan 17 17:03:18 CET 2013


Hallo,

ich versuche gerade ein Python-Plugin für QGIS zu schreiben, was eine komplexe Berechnung (mittels numpy) im 'Hintergrund' durchführen soll, die GUI aber dennoch zugreifbar lässt. Habe mir dazu das Beispielplugin von Aaron Racicot (http://svn.reprojected.com/qgisplugins/trunk/threading_demo/) geschnappt und modifiziert (siehe unten). Im Original funktioniert dies wunderbar, mit meiner Variante hängt es. Könnt ihr mir sagen, was daran falsch ist?

import numpy

class TestThread(QThread):
    def __init__(self, parentThread,parentObject):
        QThread.__init__(self, parentThread)
        self.parent = parentObject
        self.running = False
        self.total = 0
        self.currentCount = 0

    def __del__(self):
        self.running = False
        self.wait()
        
    def run(self):
        self.running = True        
	A = numpy.random.random((2000,2000))
	b = numpy.random.random((2000,1))
	x = numpy.linalg.solve(A, b)
	print x.trace()
        self.emit(SIGNAL("runFinished(PyQt_PyObject)"),"Pass")
        self.stop()

    def stop(self):
        self.running = False
        
    def getUpdate(self):
        return self.currentCount