Nehmen wir an, ich verwende einen signal
Handler für die Behandlung eines Intervall-Timers.ist Python-Variablen-Zuweisung atomar?
def _aHandler(signum, _):
global SomeGlobalVariable
SomeGlobalVariable=True
Kann ich SomeGlobalVariable
ohne dass ich Gedanken, in einem unwahrscheinlichen Szenario, dass SomeGlobalVariable
während Einstellung (das heißt der Python VM-Bytecode wurde die Ausführung der Variablen zu setzen), dass die Zuordnung innerhalb der Signal-Handler etwas brechen? (D metastabilen Zustand)
aktualisieren: Ich bin interessiert speziell in dem Fall, in dem ein „compound Assignment“ außerhalb des Handlers vorgenommen.
(vielleicht auch „low level“ Ich denke und das alles kümmert in Python genommen wird ... kommt von einem Embedded System Hintergrund, habe ich diese Art von Impulsen von Zeit zu Zeit)
aber was ist mit "Compound Assignment" außerhalb des Handlers? – jldupont
Wenn der Handler (zB) 'gvar = 3',' gvar' anfänglich 7 ist und der Code außerhalb des Handlers (zB) 'gvar + = 2', dann könnte' gvar' entweder 3 sein, 5, oder 9, abhängig davon, wie die Operationen verschachtelt enden. Das ist technisch "sicher" (was bedeutet, dass der Prozess nicht abstürzt ;-), aber wahrscheinlich nicht semantisch in Ordnung ist. –
Wo ist das angegeben? -1 wegen fehlender autoritativer Referenz. – rightfold