Example Python3 Threads
threads.py
—
Python Source,
1 KB (1980 bytes)
File contents
#!/usr/bin/env python3
# Basic Python threading example
#
# Set script as executable via: chmod +x threads.py
import sys
import threading
# Python-style thread class
class ThreadDemo(threading.Thread):
# The __init__() method is a constructor. It is run
# when this class is instantiated. Do startup work here
def __init__(self, name, startNum):
threading.Thread.__init__(self) # Required (don't ask why)
# Set any variables you want in your constructor
self.name = name
self.startNum = startNum
# The run() method of a Thread class is run when
# thread.start() is called. Do real work here
def run(self):
print("Running thread '%s' starting at %d" % (self.name, self.startNum))
i=self.startNum
while(i < (self.startNum+10)):
print(self.name + ", Count " + str(i))
i=i+1
# "Busy work" for demo program.
# Otherwise, the threads will run so quickly
# that they will finish before the scheduler
# switches to a different thread
j=0
while(j<400000):
j=j+1
# To exit the thread, just return from the run() method
def main():
print("Running in main()...")
print("Launching two threads...")
thread1 = ThreadDemo("Thread 1", 100)
thread1.start()
thread2 = ThreadDemo("Thread 2", 200)
thread2.start()
print("Launched two threads...")
# Build up a list of all threads
# (to make it easy to wait on them)
all_threads=[]
all_threads.append(thread1)
all_threads.append(thread2)
# Use the join() function to wait for a specific thread to finish
# (i.e. thread1.join() or thread2.join())
print("Waiting for all threads to finish")
for one_thread in all_threads:
one_thread.join()
print("All threads have finished")
print("Exiting main()...")
if __name__ == "__main__":
sys.exit(main())
