[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]
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.