< /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
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
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.