Quiero terminar un bucle ejecutándose en un hilo separado usando una variable global. pero este código no parece detener el hilo en bucle. Espero que el programa no se imprima más '.' después de 2 segundos, pero todavía se ejecuta indefinidamente.cómo compartir variables globales a través de subprocesos en python?
¿Estoy haciendo algo fundamentalmente malo aquí?
import time
import threading
run = True
def foo():
while run:
print '.',
t1 = threading.Thread(target=foo)
t1.run()
time.sleep(2)
run = False
print 'run=False'
while True:
pass
Creo que están tratando de representar un caso en el que el hilo está haciendo un procesamiento ininterrumpido, por lo que el punto 3 es irrelevante. ¿O está diciendo que la falta de un "time.sleep (0)" impide que otros subprocesos se ejecuten debido al bloqueo de Intérprete global? –
muchas gracias por la respuesta .. tengo mis errores :) – user730094
@Mike: No estoy tan seguro de eso, pero sí, se me pasó por la mente. Dicho esto, sé que las implementaciones más recientes de Python han solucionado algunas de las deficiencias de GIL, y mi versión de Python ejecuta este código perfectamente, y no debería impedir que se ejecuten otros subprocesos. –