Thread ne s'arrête pas quand il a fini son traitement
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 :
Code:
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() |
Le code suivant me donne la sortie console suivante :
Code:
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 |
Je ne comprends pas pourquoi je ne peux pas relancer un thread terminé, et du coup comment faire.