📜  在Python中不继承 Thread 类的情况下实现线程

📅  最后修改于: 2022-05-13 01:55:11.101000             🧑  作者: Mango

在Python中不继承 Thread 类的情况下实现线程

我们将使用一个类在Python中实现线程处理,而不是对称为 Thread 的超类进行子类化。

为了充分利用底层处理器并提高应用程序的性能,我们可以创建多个可以并行执行的线程。充分利用处理器和我们的应用程序将提供最佳的用户体验,它会很快。

在Python中有三种创建线程的方法:

  1. 使用函数
  2. 扩展线程类
  3. 不扩展线程类

我们将实施最后一种方法,也称为混合方法。我们将定义一个类,但该类不会扩展父类线程,而是我们将直接在其中定义我们想要的任何函数。相反,我们将创建线程的一个实例,然后将我们想要在该对象中执行的对象和函数作为目标传递,参数是第二个参数。然后调用线程启动方法。

示例 1:
通过打印前 10 个自然数来实现 Thread

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


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


输出:

Thread-1
0
1
2
3
4
5
6
7
8
9
10

示例 2:
通过打印给定范围内的偶数来实现线程

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

输出:

Thread-1 
10 
12 
14 
16 
18 
20