2 Kio
title | description | published | date | tags | editor | dateCreated |
---|---|---|---|---|---|---|
Threading | Paralléliser les opérations | true | 2022-10-11T09:33:35.085Z | markdown | 2022-10-11T09:10:42.435Z |
Threading
Exécuter plusiuers fonctions en même temps
Certaines fonctions d'un programme peuvent prendre du temps à s'exécuter. Cependant, vous ne souhaitez pas forcément que tout le programme s'arrête pour cette fonction. Pour une interface graphique par exemple ! Si une action requiert un certain temps, vous ne souhaiterez certainement pas planter toute l'interface. C'est là que le multi-threading intervient.
Prenons l'exemple suivant :
def wait(duration):
time.sleep(duration)
print("j'ai attendu")
def hello():
print("Hello")
wait(5)
hello()
>>>j'ai attendu
>>>Hello
Dans ce cas, on doit attendre que la fonction "wait" ait terminé son exécution pour passer à la suite. On va donc créer des threads :
import threading
import time
def wait(duration):
time.sleep(duration)
print("j'ai attendu")
def hello():
print("Hello")
wait = threading.Thread(target=wait, args=(2,))
hello = threading.Thread(target=hello)
wait.start()
hello.start()
>>>Hello
>>>j'ai attendu
Ici, on voit que la fonction "hello" n'a pas attendu la fin de "wait" pour se lancer. Pour créer le thread, on appelle la fonction Thread de la library threading (en l'affectant à une variable) avec les arguments suivants :
- target : le nom de la fonction à exécuter
- args (optionnel) : si la fonction a besoin d'arguments, on les donne ici Ensuite, on lance le thread avec la fonciton start
Attention : J'attire votre attention sur la virgule après le 2 dans les args. En effet, un tuple est attendu. Si vous n'avez qu'un seul argument à donner, il faut donc mettre une virgule pour indiquer qu'il s'agit d'un tuple. {.is-warning}