We are going implement threading in Python using a Class without sub-classing the superclass called Thread.
To make the best use of the underlying processor and to improve the performance of our application, we can create multiple threads that can execute in parallel. Making the best use of the processor and also our application will give the best user experience, it will be fast.
There are three ways to create threads in Python:
- Using a function
- Extending thread class
- Without extending thread class
We will implement the last approach is also called the hybrid approach. We will define a Class but the Class will not extend the parent class thread instead we are going to directly define any function inside that we want. Instead, we will create an instance of the thread and then pass the object and the function which we want to execute within that object as the target and the argument is the second argument. Then invoke the Thread start method.
Example 1:
Implementing Thread by printing the first 10 natural numbers
Python3
# importing thread module from threading import * # class does not extend thread class class MyThread: def display( self ): i = 0 print (current_thread().getName()) while (i < = 10 ): print (i) i = i + 1 # creating object of out class obj = MyThread() # creating thread object t = Thread(target = obj.display) # invoking thread t.start() |
Output:
Thread-1 0 1 2 3 4 5 6 7 8 9 10
Example 2:
Implementing Thread by printing even numbers within a given range
Python3
# importing thread module from threading import * # class does not extend thread class class MyThread: def display( self ): i = 10 j = 20 print (current_thread().getName()) for num in range (i, j + 1 ): if (num % 2 = = 0 ): print (num) # creating an object of our class obj = MyThread() # creating a thread object t = Thread(target = obj.display) # invoking the thread t.start() |
Output:
Thread-1 10 12 14 16 18 20