¿Es + = seguro en el hilo de python?

globalnum = 0 n = 1 class T( threading.Thread ): def run( self ): global globalnum globalnum += n for _ in xrange( 0, 999 ): t = T() t.start() print globalnum 

el resultado es 999 En mi prueba, parece que + = hilo seguro Mi pregunta es: ¿es + = realmente hilo seguro?

+= no es seguro para subprocesos ( fuente ).

No, no es seguro para subprocesos ya que la operación x += 1 toma 4 códigos de operación como se muestra a continuación:

  4 0 LOAD_GLOBAL 0 (x) 3 LOAD_CONST 1 (1) 6 INPLACE_ADD 7 STORE_GLOBAL 0 (x) 

seleccionado de:

 >>> import dis >>> def test(): ... global x ... x += 1 ... ... >>> dis.disassemble(test.func_code) 4 0 LOAD_GLOBAL 0 (x) 3 LOAD_CONST 1 (1) 6 INPLACE_ADD 7 STORE_GLOBAL 0 (x) 10 LOAD_CONST 0 (None) 13 RETURN_VALUE