Ahojte, mam jednoduchy script. Ked je na vstupe 0, tak sa rozsvieti LED a opacne. Zaroven sledujem, ci je tato funkcia povolena. To zistujem z databazy. No a toto citanie z databazy mi spomaluje to ovladanie. Napada niekoho ako toto vyriesit a zmenit komunikaciu medzi procesmi ? Mna napadlo, ze obsah databazy by sa ukladal do nejakej premeny, ktora by sa aktualizovala napr. kazdu minutu. Po Pri zmene stavu na vstupe by sa precitala tato premenna a je jedno, ci su v nej aktualne data alebo nie. Skratka v tej premennej by boli nejake data neustale.
P.S.: neviem sem vobec pridat kod.
Tu je ten kod
https://drive.google.com/file/d/0B_OOjYgNKTK-M0w2RjRSY2swc1E/view?usp=drivesdk
Tak teraz som zistil, ze ten kod,ktory som sem dal funguje ale ako nahle odkomentujem q.queue.clear(), tak vtedy je to pomale.
Tak s tym queue to nefunguje dobre. queue.clear() tammusi byt ale vtedy je to pomale.
Thready v pythone nefungujú paralelne. Kód v jednom threade blokuje kód v druhom threade (ak nie je použitý interpret ako PyPy ktorý umožňuje skutočný paralelný beh). Ak je problém v rýchlosti prístupu k db tak thread to nevyrieši.
Aby kód bežal skutočne paralelne musí sa použiť modul multiprocessing. A pozor aj na Queue, obyčajné volanie queue.get zablokuje proces kým podproces nevloží niečo do queue. Pre neblokujúce volanie je queue.get(block=False).
Alebo:
if queue.empty()==False():
nieco=queue.get()