Zdravím,
snažím se udělat si program, který by mohl fungovat, jako úkolníček. A potřeboval bych aby aby třeba každou hodinu zkontroloval databázi s úkoly a zjistil si jestli má něco připomenout...
Mě napadlo dělat to pomocí vláken, jedno bude pořád spuštěné a bude kontrolovat databázi a druhé se vždycky spustí když bude potřeba něco připomenou a vytvoří vyskakovací okno s připomínkou.
Takže zatim jsem vytvořil asi takovouhle konstrukci.
import threading
import time
import sys
def kontrolor():
while 1:
print 'kontroluji databazi'
#print vlakno2.isAlive()
if not(vlakno2.isAlive()):
vlakno2.start()
time.sleep(0.2)
def upominka():
print 'referat - kinetika'
#v realnem programu bude samozrejme slozitejsi, tohle bych asi ani nepotreboval davat do samostatneho vlakna..
sys.exit()
vlakno1 = threading.Thread(target = kontrolor)
vlakno2 = threading.Thread(target = upominka)
vlakno1.start()
Problém je že mi to jednak moc nechce fungovat (jestli jsem to dobře pochopil tak interpretu vadí, že vlákno2 už je spuštěné, což je díky té kontrole isAlive() nesmysl a když si to vyprintuju tak po to taky tvrdí, že už nejede). Tohle mi to vyhodí:
>>> kontroluji databazi
referat - kinetika
kontroluji databazi
Exception in thread Thread-1:
Traceback (most recent call last):
File "C:\Program Files\Python24\lib\threading.py", line 442, in __bootstrap
self.run()
File "C:\Program Files\Python24\lib\threading.py", line 422, in run
self.__target(*self.__args, **self.__kwargs)
File "C:\Users\Fonadius\AppData\Local\Temp\B3247626.py", line 10, in kontrolor
vlakno2.start()
File "C:\Program Files\Python24\lib\threading.py", line 410, in start
assert not self.__started, "thread already started"
AssertionError: thread already started
Moc díky za každou pomoc, i kdybych to měl udělat úplně jinak, osobně mi to nepřijde jako nijak úžasný řešení, ale nic jiného jsem nevymyslel a na internetu jsem nic nenašel..