Portál AbcLinuxu, 8. listopadu 2025 09:31
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.