Bonjour,
J'ai un programme qui lance un thread qui doit effectuer un traitement. Une fois le traitement terminé, je souhaite que le thread s'arrête, puis le relancé à nouveau plus tard.
J'ai fait une représentation simple de ce que fait mon programme :
Le code suivant me donne la sortie console suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 from threading import Thread, Event import time class MonThread(Thread): def __init__(self): Thread.__init__(self) self._stopevent = Event() def run(self): print("Ligne 1") self._stopevent.wait(1) print("Ligne 2") thr = MonThread() thr.start() time.sleep(0.5) print("Thread alive : {}".format(thr.is_alive())) time.sleep(1) print("Thread alive : {}".format(thr.is_alive())) if not thr.is_alive(): thr.start()
Je ne comprends pas pourquoi je ne peux pas relancer un thread terminé, et du coup comment faire.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 Ligne 1 Thread alive : True Ligne 2 Thread alive : False Traceback (most recent call last): File "D:/Profiles/flebaillif/Alarme/testThread.py", line 21, in <module> thr.start() File "C:\Program Files (x86)\Python\Python36-32\lib\threading.py", line 842, in start raise RuntimeError("threads can only be started once") RuntimeError: threads can only be started once
Partager