„Umgehen“ kannst Du es gar nicht. Nur vermeiden, indem Du Deinen Quelltext und Deine Anwendung sauber strukturierst, so dass Klassen voneinander entkoppelt sind, direkter Zugriff auf Attribute soweit als möglich vermieden wird, und stattdessen Signale zur Kommunikation genutzt werden.
Im gezeigten Beispiel allerdings wurde man "liste" einfach bei der Erzeugung des Threads übergeben, so dass der Thread eine interne Kopie der Liste erhält.
Multithreading in PyQt: Problem locking
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Da kapiere ich das Problem nicht. Wenn Du doch im Worker Thread einen neuen Listeneintrag generierst (oder auch mehrere), wieso sollten diese Daten dann aus dem Hauptthread noch einmal zurückgesendet werden?Shaldy hat geschrieben:Okay, aber was, wenn man ein Signal aus dem 2. Thread heraus emittiert, welches im ersten Thread "liste" aktualisiert? wie bekomme ich dann die neue liste in den 2. Thread?
Und generell: Das sollte auch anders herum funktionieren. Sprich, der Worker-Thread kann doch sicherlich auch Signale aus dem Hauptthread empfangen... hab ich zugegebener Maßen auch noch nicht gemacht.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
assert encoding_kapiert