Welche Operationen sind in Python threadsicher?Python

Python-Programme
Anonymous
 Welche Operationen sind in Python threadsicher?

Post by Anonymous »

Ich versuche zu verstehen, warum einige bestimmte Code-Snippets Thread-safe verhalten. /> Dieses [gil] vereinfacht die CPython-Implementierung, indem das Objektmodell (einschließlich kritischer integrierter Typen wie Dikte < /p>
< /blockquote>
MEINE BRAUTE VERWENDUNG DOICT VERSEHMEN. /> Einige Operationen auf integrierten Typen dekompilieren genau in einen Bytecode-Anweisungen, der als Thread-safe (in einem bestimmten Kontext) betrachtet werden kann.

Code: Select all

def inc(stats):
stats["ok"] = stats["ok"] + 1
wird in (unter Python 3.10.14 (Main, 19. März 2024, 21:46:16) [Clang 15.0.0 (Clang-1500.3.9)] auf Darwin ).

Code: Select all

  0 LOAD_FAST                0 (stats)
2 LOAD_CONST               1 ('ok')
4 BINARY_SUBSCR
6 LOAD_CONST               2 (1)
8 BINARY_ADD
10 LOAD_FAST                0 (stats)
12 LOAD_CONST               1 ('ok')
14 STORE_SUBSCR
16 LOAD_CONST               0 (None)
18 RETURN_VALUE
< /code>
wobei wir deutlich sehen können, dass der Vorgang in drei entsprechende Bytecode -Anweisungen unterteilt ist (add -set) (set add add) (BINARY_SUBSCR
, binary_add , store_subscr ). Konsistente Ergebnisse) < /p>
Wenn mein Verständnis korrekt ist, sollten wir gelegentlich Rennbedingungen erwarten. Genug so Python -Thread -Scheduler, der in der Mitte der Ausführung der Aussage (nicht Bytecode) Thread nicht vorbefragte. Die 3. Intuition ist also wahrscheinlich richtig und Statistiken ["OK"] = Statistiken ["OK"] + 1 Auch inhärent nicht thread sicher, da sie auch aus mehreren Bytecode -Anweisungen bestehen.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post