"Beim Erstellen von Python-GUI-Anwendungen mit PySide6 kann die Benutzeroberfläche "eingefroren" werden, wenn lang laufende Hintergrundaufgaben ausgeführt werden. Dies liegt daran, dass die Ereignisschleife, die Benutzerinteraktionen, Signale und Timer behandelt, durch Ereignisse angetrieben wird und im selben Thread wie der Python-Code läuft. Jede durch die Ereignisschleife ausgelöste Ausführung wird synchron innerhalb dieses Threads ausgeführt, was dazu führt, dass die GUI einfriert, wenn die Aufgabe lange dauert. Um dies zu vermeiden, sollten lang laufende Aufgaben aus dem GUI-Thread in einen anderen Thread verschoben werden. Eine minimale Stub-Anwendung wird bereitgestellt, um die multithreaded-Ausführung in PySide6 zu demonstrieren. Der falsche Ansatz, um dieses Problem zu lösen, besteht darin, die processEvents()-Methode zu verwenden, die unvorhersehbares Verhalten und undefinierte Ergebnisse verursachen kann. Stattdessen können Threads und Prozesse verwendet werden, um unabhängige Aufgaben innerhalb einer PySide6-Anwendung auszuführen. Qt bietet eine einfache Schnittstelle für das Ausführen von Jobs oder Aufgaben in anderen Threads mit QRunnable und QThreadPool. Dieser Ansatz ermöglicht das einfache Anstellen und Ausführen von Arbeitern und das Abrufen von Ergebnissen. Durch die Verwendung von QThreadPool kann die Anwendung lang laufende Aufgaben ohne Einfrieren der GUI ausführen."
pythonguis.com
Python GUIs: Multithreading PySide6 applications with QThreadPool — Run background tasks concurrently without impacting your UI
Create attached notes ...
