Thread lets different parts of program run concurrently. Usually when you have a part of execution in your program that takes longer than usual to run, it’s better let it run in a thread without blocking the main program to handle the user’s interactions or other executions etc.
Thread in Python does not mean multi-processing, it still runs on a single processor. Functions run in different threads are simply taking turns to run.
import threading import time def my_func1(): counter = 0 while counter < 100 : counter += 1 print("counter is :"+str(counter)) time.sleep(1) print("bye bye now") def my_func2(): txt = input() while txt != 'x' : print("You've entered :" + txt +"\n") txt = input() print("bye, you've entered x")
In the above code, we have two functions my_func1 and my_func2.
Function my_func1 takes long time to execute, as it only exits when it's increased the counter to 100 and each time it'll take a one-second sleep; meaning you'll have to wait up to about 100 seconds then the following lines of instructions to be executed.
The function my_func2 keeps looping for the user's input at the command line and exits only when an "x" is entered.
thread1 = threading.Thread(target=my_func1) thread1.start() thread2 = threading.Thread(target=my_func2) thread2.start()
In the above example we run the two functions in two separate threads, thus my_func1 and my_func2 will run concurrently, the output is as follows:
If my_func1 and my_func2 are not run in threads, then the program has to wait for my_func1 to finish first then only to run my_func2.