在Python中不继承 Thread 类的情况下实现线程
我们将使用一个类在Python中实现线程处理,而不是对称为 Thread 的超类进行子类化。
为了充分利用底层处理器并提高应用程序的性能,我们可以创建多个可以并行执行的线程。充分利用处理器和我们的应用程序将提供最佳的用户体验,它会很快。
在Python中有三种创建线程的方法:
- 使用函数
- 扩展线程类
- 不扩展线程类
我们将实施最后一种方法,也称为混合方法。我们将定义一个类,但该类不会扩展父类线程,而是我们将直接在其中定义我们想要的任何函数。相反,我们将创建线程的一个实例,然后将我们想要在该对象中执行的对象和函数作为目标传递,参数是第二个参数。然后调用线程启动方法。
示例 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