Path: csiph.com!fu-berlin.de!uni-berlin.de!not-for-mail From: Stefan Schwarzer Newsgroups: de.comp.lang.python Subject: =?utf-8?q?=5BPython-de=5D_Re=3A_Code_Style_Review?= Date: Tue, 29 Nov 2022 23:16:21 +0100 Lines: 50 Message-ID: References: <480b80d21e58d280c437b4854bfc7cf1@posteo.de> <3d4a86fc-9794-30bb-4f28-6154caf24cfa@sschwarzer.net> Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-Trace: news.uni-berlin.de On5b37tsXR2TCq1Eut3wEA1oiZfEHqdBDO9T6Eq7P5Ng== Authentication-Results: mail.python.org; dkim=none reason="no signature"; dkim-adsp=none (unprotected policy); dkim-atps=neutral User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.24) Gecko/20100411 Thunderbird/2.0.0.24 Mnenhy/0.7.6.666 Content-Language: en-US, de-DE In-Reply-To: X-Provags-ID: V03:K1:lnGNUGGsvmWFPNJXTgksloR/qpbwXLyZzlV4EDjDc6pjusT952Q EkKFt19Mgh8CuAQp6Kauc+pbNY6OFgicaTDv0RDtehxO96YuYuNr5rPCT+6TwGP3SaWSgx7 vuVLbi7xyOEd73odGHmlFMSIq7t80NO9ezanVacSkqKqEIbZ3uB0QFbunHwHHw0W/nCanL+ KmmBJBEgij+D/isw/2rtQ== X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1;V03:K0:SE+i9tXp6es=:fUbDW46cqeX7cb+pemsgDZ 3TNssHT6RthnNJiQ8dvAGKoU1k+zfAo3jMQKQDgurvysbTWTatHe8UFKkOAfdRKDkj00bfuXP iEhSklWwUINtgSG6MXdhZv6BoS2Mbf+4m1g+Cp1cUf2bBrstyDRiqn9/PruAJ4D6L87S4gwor JDUnCLsJx4u380GMihhO9k4nK+Scr8kZtbFkRSPBsweghjJQufMHVL1g0yYD3NZQQ+SJ1BPJN nCF7x+35WD5TR4j/DCiZgKy045TfGC6oymtEQaR9mp/bfEM3cghdNpL7HEesCLPOlQQm+Sfdp XdsJtwnjPEo9j0rdxdk7kCGATP/jI5O9u31tFdbJxO5leSHpjRemE2gy5sVDlQUic/mqflOrp 3S/PHeZcgIQXOmvlY92A66HH0IMwPEecVorgtMR0OppeIQXzMvDaNon62BTeNxMFNdRulQBnS wrqc+WwdhDkXeqTenrBJIhe1y7Z3UP6mC5M/PNo3DFBKGn3eNVfCSV/p5JJ0yEweSrrtwQ/ak NqGL1dCVqvWGz9S4c/kZNpWaVQG/TnudPZLU2QX4KzsgZnGyM8SQivf9gsWeHqvJMbSpRD9P4 YpTwaoMExeDT5jhWZcqKEQMcNii7hqSLdtnVxNUU+3Ea9n/4qHVwMIqdx4/IL0knQ5lbKPPdT Pyxt+Z/XfOTxZ35HR557CFkwdyr/mLlQANsk/Hgcw2LF1/kCZkLllzGEdzT5m9Zk5iZtMHDry tnc3u2qY64Of9TNjFpvHa5uB+x3mBabljNyfS4csr9yUFmpSK4p7W8kl9/fp4CimZSTL3JP1c xuwM2qFa0ox3zCmPQ1MR7lPyP05/A== Message-ID-Hash: C4BY2PVIJAATWZ6AAZSFT557TJTRZMJZ X-Message-ID-Hash: C4BY2PVIJAATWZ6AAZSFT557TJTRZMJZ X-MailFrom: sschwarzer@sschwarzer.net X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-python-de.python.org-0; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header X-Mailman-Version: 3.3.7 Precedence: list List-Id: Die Deutsche Python Mailingliste Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: Xref: csiph.com de.comp.lang.python:5879 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