Is Python variable assignment atomic?

python, signals

Solution

Simple assignment to simple variables is "atomic" AKA threadsafe (compound assignments such as `+=` or assignments to items or attributes of objects need not be, but your example is a simple assignment to a simple, albeit global, variable, thus safe).

Problem

Let's say I am using a `signal` handler for handling an interval timer. ``` def _aHandler(signum, _): global SomeGlobalVariable SomeGlobalVariable=True ``` Can I set `SomeGlobalVariable` without worrying that, in an unlikely scenario that whilst setting `SomeGlobalVariable` (i.e. the Python VM was executing bytecode to set the variable), that the assignment within the signal handler will break something? (i.e. meta-stable state) Update: I am specifically interested in the case where a "compound assignment" is made outside of the handler. (maybe I am thinking too "low level" and this is all taken care of in Python... coming from an Embedded Systems background, I have these sorts of impulses from time to time)

Original source

Related problems