Hallo,
Zojuist heb ik een raar probleem in python waar ik niet uitkom. Ik ben bezig met een script die een foto
maakt en hem download en dan te zien is op m'n scherm.
Ik start een thread vanuit een functie die luistert naar een knop aan een GPIO poort.
De take_picture functie bestaat uit een aantal commando's die naar een websocket(met Tornado) worden gestuurd. Daartussen zitten wat "time.sleep(x)" regels. En verder gebeurt er niks bijzonders in de functie.
Als ik deze de eerste keer trigger is er niks aan de hand. De functie doet z'n ding zonder fouten o.i.d. Bij de 2e keer krijg ik de foutmelding: RuntimeError: threads can only be started once
Dat is raar, want als ik check met "th_takepic.isAlive()" krijg ik een "False". Dus je zou zeggen dat de thread klaar is. Zelfs als ik de take_picture functie helemaal leegmaak doet tie het zelfde. Dus ik weet zeker dat het daar niet aan ligt. Ook als ik "threading.enumerate()" doe in een for loop staat de thread er niet tussen.
Waar zou dit aan kunnen liggen? Ik post geen hele lap code omdat dat natuurlijk niet de bedoeling is, ik hoop daarom dat er een soort van algemeen antwoord is.
Zojuist heb ik een raar probleem in python waar ik niet uitkom. Ik ben bezig met een script die een foto
maakt en hem download en dan te zien is op m'n scherm.
Ik start een thread vanuit een functie die luistert naar een knop aan een GPIO poort.
Python:
1
2
3
4
5
6
7
8
9
10
| #de initialisatie van de thread: takepic_h = take_picture() th_takepic = threading.Thread(target=takepic_h.run, name="take_picture thread") th_takepic.daemon = False #in de functie word deze getrigger met if not th_takepic.isAlive(): th_takepic.start() else: print( "server> Warning: Er word al een foto gemaakt") |
De take_picture functie bestaat uit een aantal commando's die naar een websocket(met Tornado) worden gestuurd. Daartussen zitten wat "time.sleep(x)" regels. En verder gebeurt er niks bijzonders in de functie.
Als ik deze de eerste keer trigger is er niks aan de hand. De functie doet z'n ding zonder fouten o.i.d. Bij de 2e keer krijg ik de foutmelding: RuntimeError: threads can only be started once
Dat is raar, want als ik check met "th_takepic.isAlive()" krijg ik een "False". Dus je zou zeggen dat de thread klaar is. Zelfs als ik de take_picture functie helemaal leegmaak doet tie het zelfde. Dus ik weet zeker dat het daar niet aan ligt. Ook als ik "threading.enumerate()" doe in een for loop staat de thread er niet tussen.
Waar zou dit aan kunnen liggen? Ik post geen hele lap code omdat dat natuurlijk niet de bedoeling is, ik hoop daarom dat er een soort van algemeen antwoord is.
offtopic:
Disclaimer: Ik speel al even met python voor verschillende hobby projecten en heb mijn kennis alleen van het web, dus ben geen python pro
Disclaimer: Ik speel al even met python voor verschillende hobby projecten en heb mijn kennis alleen van het web, dus ben geen python pro
Hallo!