Реализация потоковой передачи без наследования класса потоков в Python

Опубликовано: 12 Апреля, 2022

Мы собираемся реализовать потоки в Python с использованием класса без подкласса суперкласса под названием Thread.

Чтобы наилучшим образом использовать базовый процессор и повысить производительность нашего приложения, мы можем создать несколько потоков, которые могут выполняться параллельно. Максимально эффективное использование процессора и нашего приложения обеспечит максимальное удобство работы пользователей, это будет быстро.

Есть три способа создания потоков в Python:

  1. Использование функции
  2. Расширение класса потока
  3. Без расширения класса потока

Мы реализуем последний подход, который также называется гибридным подходом. Мы определим класс, но класс не будет расширять поток родительского класса, вместо этого мы собираемся напрямую определять любую функцию внутри, которую мы хотим. Вместо этого мы создадим экземпляр потока, а затем передадим объект и функцию, которую мы хотим выполнить внутри этого объекта, в качестве цели, а аргумент будет вторым аргументом. Затем вызовите метод запуска потока.

Пример 1:
Реализация Thread путем печати первых 10 натуральных чисел

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()

Выход:

 Нить-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()

Выход:

 Нить-1 
10 
12 
14 
16 
18 
20

Внимание компьютерщик! Укрепите свои основы с помощью базового курса программирования Python и изучите основы.

Для начала подготовьтесь к собеседованию. Расширьте свои концепции структур данных с помощью курса Python DS. А чтобы начать свое путешествие по машинному обучению, присоединяйтесь к курсу Машинное обучение - базовый уровень.