Portál AbcLinuxu, 10. května 2025 09:27

Dotaz: Python ukonceni vicevlaknove aplikace

8.9.2011 11:33 Karoline
Python ukonceni vicevlaknove aplikace
Přečteno: 760×
Odpovědět | Admin
Dobry den, mam nasledujici aplikaci v pythonu:
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:


Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

mess avatar 8.9.2011 12:15 mess | skóre: 43 | blog: bordel | Háj ve Slezsku - Smolkov
Rozbalit Rozbalit vše Re: Python ukonceni vicevlaknove aplikace
Odpovědět | | Sbalit | Link | Blokovat | Admin
Nebylo by lepší použít modul 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"
Cez párne mesiace zošíváš vaginy, cez neparne montuješ hajzle.
mess avatar 8.9.2011 12:18 mess | skóre: 43 | blog: bordel | Háj ve Slezsku - Smolkov
Rozbalit Rozbalit vše Re: Python ukonceni vicevlaknove aplikace
Samozřejmě jsem udělal překlep. Na řádku číslo 2 má být toto:
from threading import Thread
(ve slově Thread má být velké T).
Cez párne mesiace zošíváš vaginy, cez neparne montuješ hajzle.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.