Ondersteuning > Programmeren

python: kom er niet echt uit

<< < (2/4) > >>

JvH:
Je zult die loop in een aparte thread moeten uitvoeren. Een thread is in wezen een soort proces, een pad van executie (uitvoering dus, niet de andere betekenis :)). Door 2 threads te gebruiken kun je tegelijkertijd 2 taken uitvoeren in je programma.

Als je 1 thread gebruikt voor je programma, kan het kloppen dat je GUI geblokkeerd wordt. Je programma blijft nl. in de loop zitten, waardoor het dus geen tijd meer vrij heeft voor het afhandelen van user input (de GUI dus).

EDIT:
Hier  is het (Engelstalige) Wikipedia-artikel te vinden over multi-threaded programmeren.
Hier is een voorbeeld te zien van threads in Python.

Waarschuwing: threads vallen wel onder het wat moeilijkere programmeerwerk. Succes ermee!

eendje:
Je kunt toch ook dit doen?

import time

#lees temperatuur in variabele CPUtemp

while 1:
    if vinkje:
        if CPUtemp < 30:
           print 'kleiner dan 30'
        elif (CPUtemp >= 30) & (CPUtemp < 45):
          print 'tussen 30 en 45'
        else:
           print 'groter dan 45'
    time.sleep (1) #1x per seconde

Nunslaughter:
eendje: zo werkt het ook niet, allez, werkt wel, maar blijft gewoon hangen tot ik de loop onderbreek in de terminal...

jvh: ik heb even gekeken en zal er zo snel mogelijk eens mee aan de slag gaan (ben wat veel dingen tegelijk aan het uitproberen).
is dit trouwens de enige of goede manier om zoiets te doen? want er staat: "For many applications, threads are overkill but on some occasions they can be useful. "...

ik zal eens gaan zoeken naar wat voorbeelden van hoe andere programmas dit doen...zoals een sensor applet ofzo...

eendje:
Sorry ik had maar één probleem opgelost nl. die van het vinkje :D. Je kunt er natuurlijk ook een een controle toevoegen of je wilt stoppen, bijv.:

while 1:
    if vinkje:
        if CPUtemp < 30:
           print 'kleiner dan 30'
        elif (CPUtemp >= 30) & (CPUtemp < 45):
          print 'tussen 30 en 45'
        else:
           print 'groter dan 45'
    if stoppen:
        break
    time.sleep (1) #1x per seconde

Met een stopknop zet je dan de variabele stoppen op 1. Misschien niet zo netjes, maar misschien wel iets dat werkt?

Nunslaughter:
nee, zoiets had ik ook al geprobeerd, maar aangezien de gui blijft hangen, kan ik dus ook geen stop-knop gebruiken...

Navigatie

[0] Berichtenindex

[#] Volgende pagina

[*] Vorige pagina

Naar de volledige versie