[Python-de] Re: Code Style Review
Stefan Schwarzer <[email protected]>
| Newsgroups | gmane.comp.python.general.german |
|---|---|
| Message-ID | <[email protected]> |
On 2022-11-29 21:44, Marc Haber wrote: > On Tue, Nov 29, 2022 at 06:51:17PM +0100, Stefan Schwarzer wrote: >> On 2022-11-28 22:07, Marc Haber wrote: >>> Kann ich die Locks innerhalb der entsprechenden Funktion definieren >>> oder bekomme ich dann in jedem Thread ein eigenes Lock, was der >>> Intention entgegen spricht? >>> >>> Ist: >>> >>> foolock = threading.Lock() >>> def foo: >>> with foolock: >>> (tue Dinge mit foo, potenziell multithreaded) >>> >>> dasselbe wie >>> >>> def foo: >>> foolock = threading.Lock() >>> with foolock: >>> (tue Dinge mit foo, potenziell multithreaded) >>> >>> ? >> >> Die Ansätze sind _nicht_ gleichwertig. Wie du richtig >> erkannt/vermutet hast, definierst du im zweiten Ansatz bei >> Ausführung von `foo` "on the fly" ein Lock-Objekt. > > Dann muss ich hier mit globalen Locks arbeiten? Genau, bzw. du musst sicherstellen, dass der Code im `with`-Block nur einmal gleichzeitig ausgeführt wird. Ob das Lock global auf Modul-Ebene oder in einem anderen Objekt gespeichert ist, ist nicht relevant. >> Ein weiterer Ansatz ist, Queues zur Synchronisation zu >> verwenden, was tendenziell deutlich weniger fehleranfällig >> ist. > > Das könnte für die vorliegende Verwendung overkill sein. Ich finde die Verwendung von Queues im Allgemeinen ziemlich intuitiv, und man kann leichter darüber nachdenken und sicher(er) sein, dass der Code funktioniert. Aber nimm ruhig den Ansatz, mit dem du dich besser fühlst (wenn der Schaden im Fehlerfall nur gering ist; aber das musst du selbst einschätzen :-) ). Viel Spaß und viele Grüße Stefan _______________________________________________ python-de Mailingliste -- [email protected] Zur Abmeldung von dieser Mailingliste senden Sie eine Nachricht an [email protected] https://mail.python.org/mailman3/lists/python-de.python.org/ Mitgliedsadresse: [email protected]