problème
Jugez s'il est réellement en cours d'exécution après le chargement du processus
solution
Afin de déterminer si le thread a atteint un certain point dans son processus et d'effectuer les opérations suivantes en conséquence, nous utilisons l'objet Event dans la bibliothèque de threads.
Exemple simple
Dans cette expérience, «le compte à rebours est en cours» apparaîtra toujours après le «démarrage du compte à rebours».
from threading import Thread, Event
import time
def countdown(n, started_evt):
print('countdown starting')
started_evt.set()
while n > 0:
print('T-minus', n)
n -= 1
time.sleep(2)
started_evt = Event()
print('Launching countdown')
t = Thread(target=countdown, args=(10, started_evt))
t.start()
started_evt.wait()
print('countdown is running')
Résultats de la
Puisque 'compte à rebours est en cours d'exécution' est après started_evt.wait (), il est nécessaire d'attendre le moment où le processus commence à s'exécuter avant que ce caractère ne soit imprimé, c'est-à-dire que cette information d'état est un signe pour juger si le le processus est déjà en cours d'exécution. Il s'agit en fait de l'indicateur de début du thread principal en attente du thread de compte à rebours, et cet indicateur de début est défini dans la fonction de compte à rebours via started_evt.set ().