Portál AbcLinuxu, 10. května 2025 09:27
import time import thread def kill(): time.sleep(2) print "Koncim" quit() thread.start_new_thread(kill,()) time.sleep(10)Po spusteni se ceka 2 vteriny, pak se jedno vlakno ukonci, ale druhe pokracuje jeste 8 vterin v cinnosti. Ja bych potrebovala, aby se po tech dvou vterinach ukoncil cely program, tedy obe vlakna, s tim, ze ukonceni aplikace bude v te funkci kill(). Je toho mozne nejakym zpusobem docilit?
Řešení dotazu:
threading
(viz dokumentace)? Potom by ten tvůj program vypadal nějak takto:
import time from threading import thread class MojeVlakno(Thread): """ Třída reprezentující moje vlákna. """ def run(): """ Metoda obsahující hlavní kód vlákna. """ time.sleep(2) print "Koncim" vlakno = MojeVlakno() vlakno.start() vlakno.join(10) # budeme čekat max 10 sekund na ukončení vlákna "vlakno" # je-li metoda join() volána bez parametrů, bude čekat neomezeně dlouho. print "Vsechna vlakna skoncila nebo ubehlo 10 sekund"
from threading import Thread(ve slově Thread má být velké T).
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.