Diener zweier Threads
Netzwerk-Threads in PyQt5-Anwendungen
Parallele Anwendungen haben Tücken. Bei Netzwerkanfragen in grafischen Programmen mit PyQt5 kommt man um Threads jedoch kaum herum. Ich habe mir mit einer scheinbar naheliegenden Implementierung selbst ins Knie geschossen. Aber ich zeige auch, wie man es ohne Zusatzaufwand besser macht.
Bei der Android-App zum Kalorien zählen „Lose It!“ fragte ich mich zuletzt, ob sie ihre Daten auch wie beworben mit Google-Fit synchronisiert. Also schrieb ich mir ein Programm mit PyQt5, das Google Fit abfragt und alle Nahrungsmitteleinträge der letzten Woche anzeigt [1]. Für den Zugriff auf das REST-API sind natürlich Netzwerkanfragen nötig und als brave Programmiererin wusste ich: Netzwerkanfragen sollten man nie im Haupt-Thread eines grafischen Programms absetzen, weil diese das Interface blockieren, bis die Antwort da ist.
Zum Glück bringt Python die Klasse Thread mit, mit der ich in ein paar Zeilen einen eigenen Thread für den Request definieren kann (siehe Kasten links).