Voglio terminare un ciclo in esecuzione in un thread separato utilizzando una variabile globale. ma questo codice non sembra interrompere il ciclo in loop. Mi aspetto che il programma non stampi più '.' dopo 2 secondi, ma funziona ancora a tempo indeterminato.come condividere le variabili globali attraverso i thread in python?
Sto facendo qualcosa di fondamentalmente sbagliato qui?
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
Penso che stiano cercando di rappresentare un caso in cui il thread sta eseguendo l'elaborazione non-stop, quindi il punto 3 è discutibile. o stai dicendo che la mancanza anche di un 'time.sleep (0)' impedisce l'esecuzione di altri thread a causa del Global Interpreter Lock? –
molte grazie per la risposta .. ho avuto i miei errori :) – user730094
@Mike: Non ne sono così sicuro, ma sì, mi è venuto in mente. Detto questo, so che le più recenti implementazioni di Python hanno risolto alcune delle carenze di GIL, e la mia versione di Python esegue questo codice perfettamente bene, e non dovrebbe impedire l'esecuzione di altri thread. –