多线程练习1:使用继承Thread类的方式创建线程
时间: 2024-03-05 12:49:35 浏览: 30
好的,让我们来写一个简单的多线程练习吧。下面是一个使用继承 `Thread` 类的方式来创建线程的示例代码。
```python
import threading
import time
class MyThread(threading.Thread):
def __init__(self, thread_name, delay):
threading.Thread.__init__(self)
self.thread_name = thread_name
self.delay = delay
def run(self):
print('线程 %s 开始执行' % self.thread_name)
for i in range(5):
print('%s: %d' % (self.thread_name, i))
time.sleep(self.delay)
print('线程 %s 执行完毕' % self.thread_name)
if __name__ == '__main__':
t1 = MyThread('线程1', 0.5)
t2 = MyThread('线程2', 1)
t1.start()
t2.start()
t1.join()
t2.join()
print('程序执行完毕')
```
在上面的代码中,我们定义了一个名为 `MyThread` 的类,继承了 `threading.Thread` 类,并重写了 `run` 方法。
在 `__init__` 方法中,我们传递了 `thread_name`(线程的名称)和 `delay`(每次执行循环的延迟时间)两个参数,并在子类中使用 `self` 分别赋值给了实例变量 `self.thread_name` 和 `self.delay`。
在 `run` 方法中,我们使用 `for` 循环执行了 5 次打印输出,并在每次循环之后通过 `sleep` 方法让线程休眠一段时间。
在主函数中,我们实例化了两个线程对象 `t1` 和 `t2`,并分别启动它们的线程。最后调用 `join` 方法等待线程执行完毕,并在主线程中输出一条提示信息表示程序已经执行完毕。
当您运行上述代码时,您将看到如下输出结果:
```python
线程 线程1 开始执行
线程 线程2 开始执行
线程1: 0
线程2: 0
线程1: 1
线程2: 1
线程1: 2
线程1: 3
线程2: 2
线程1: 4
线程2: 3
线程2: 4
线程 线程1 执行完毕
线程 线程2 执行完毕
程序执行完毕
```
可以看出,两个线程同时执行,每个线程都按照指定的延迟时间循环执行了 5 次,并最终执行完毕。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![txt](https://img-home.csdnimg.cn/images/20210720083642.png)