Thanks to the advice from Joseph and Alan, I hacked a quick python script
which demonstrates my problem more accurately.


Its not board specific as was my last code.  This sample works the same on
my pcduino as it does on my desktop.

<python>

#threading problem example

import threading
import sys
import time

threads = []

exitFlag = 0

def delay(ms):
    time.sleep(1.0*ms/1000)

def threadloop():
    while not exitFlag:
        print "exitFlag value: ", exitFlag
        delay(2000)

def cleanup():
    exitFlag = 1
    print "Exit flag value: ", exitFlag
    for t in threads:
        t.join()
    sys.exit()

def main():
    try:
        my_thread = threading.Thread( target = threadloop, args = () )
        my_thread.start()
        threads.append(my_thread)
        delay(20)
        keypress = raw_input("Press a key and hit Enter to exit\n")
        cleanup()
    except KeyboardInterrupt:
        cleanup()


main()

</python>

the thread driven loop doesn't ever see the fact that the exitFlag as
changed, based on the output to screen.

Be warned, this code gives you an infinite loop, so be sure to run it in a
terminal you can kill without impacting other work you are doing.

There are many ways to work with theads.  Class definitions, etc.  The
thread and threading modules.

I've tried several and get the same results.

What do I need to do to get the thread to stop based on the value of
exitFlag?
_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
https://mail.python.org/mailman/listinfo/tutor

Reply via email to