Python中线程的创建方法:派生Thread子类
2017-11-25 21:14
519 查看
在看这个之前,我应该假设你对类已经很熟悉了。
什么是超类,子类?怎么派生子类?子类的继承,子类对于超类方法的添加或是重载。这些如果很熟悉,就能看懂了,如果不是很熟悉,你可以去看看《Python学习手册》,它的第六部分关于类介绍的很仔细,阅读即可。
那么接下来就来讲这种创建线程的方式——派生Thread子类,并创建子类的实例
接下来用假如一点东西来验证我上面的两个解释
接下来我们来验证(start)方法是调用run方法这一说法
我们假设threading.Thread中的start方法的定义方式为
我们会在接下来的代码中将start方法进行扩展
你可以将以上两段代码复制粘贴到你的IDLE中,看看运行效果,我相信你会恍然大悟的
什么是超类,子类?怎么派生子类?子类的继承,子类对于超类方法的添加或是重载。这些如果很熟悉,就能看懂了,如果不是很熟悉,你可以去看看《Python学习手册》,它的第六部分关于类介绍的很仔细,阅读即可。
那么接下来就来讲这种创建线程的方式——派生Thread子类,并创建子类的实例
#-*- coding: UTF-8 -*- import threading import time def loop(num): print('the start time is %s'%time.ctime()) time.sleep(num) print('the end time is %s'%time.ctime()) class Mythread(threading.Thread): def __init__(self,func,args,name): threading.Thread.__init__(self) self.func=func self.args=args self.name=name def run(self): #这里是将threading.Thread中的run方法进行了重载 self.func(self.args) def main(): t=Mythread(loop,4,loop.__name__) f=Mythread(loop,5,loop.__name__) t.start() #解释:这里的start可以说是调用run的方法 f.start() t.join() f.join() if __name__=='__main__': main()
接下来用假如一点东西来验证我上面的两个解释
接下来我们来验证(start)方法是调用run方法这一说法
我们假设threading.Thread中的start方法的定义方式为
def start(self): self.run()
我们会在接下来的代码中将start方法进行扩展
``` #-*- coding: UTF-8 -*- import threading import time def loop(num): print('the start time is %s'%time.ctime()) time.sleep(num) print('the end time is %s'%time.ctime()) class Mythread(threading.Thread): def __init__(self,func,args,name): threading.Thread.__init__(self) self.func=func self.args=args self.name=name def run(self): #这里是将threading.Thread中的run方法进行了重载 self.func(self.args) def printff(self): print(self.args) def start(self): #为了更好的理解,你可以先将**threading.Thread.start(self)**这一句删除进行测试 threading.Thread.start(self) self.printff() def main(): t=Mythread(loop,4,loop.__name__) f=Mythread(loop,5,loop.__name__) t.start() #解释:这里的start可以说是调用run的方法 f.start() t.join() f.join() if __name__=='__main__': main()
你可以将以上两段代码复制粘贴到你的IDLE中,看看运行效果,我相信你会恍然大悟的
相关文章推荐
- Python3-根据线程(Thread数量来查看线程生命周期,第一种创建线程方法
- python 8-1 如何使用多线程,Thread创建线程,执行函数赋值给target//类+函数放在run方法中执行
- python开发之基于thread线程搜索本地文件的方法
- 创建线程的方法 Thread Runnable
- java线程之用Thread类创建线程的方法
- 利用Thread类的子类来创建线程
- java 创建线程的三种方法Callable,Runnable,Thread比较及用法
- python基础----继承与派生、组合、接口与归一化设计、抽象类、子类中调用父类方法
- java 创建线程的三种方法Callable,Runnable,Thread比较及用法
- 创建线程的方法 Thread Runnable
- Java基础之线程——派生自Thread类的子类(TryThread)
- [Java] Thread 创建线程的第二种方法
- [Java] Thread 创建线程的第二种方法
- 2-5-Java多线程-创建线程的Runnable接口方法及Thread源码解析
- 创建线程的方法一:继承Thread类
- java 创建线程的三种方法Callable,Runnable,Thread比较及用法
- java 创建线程的三种方法Callable,Runnable,Thread比较及用法
- 创建线程的第一种方法:继承Thread类
- 05-多线程(多线程创建的方式一-继承Thread类)1 2 06-多线程(Thread类中的方法&线程名称) 08-多线程(线程的状态)图解
- 当用Thread的子类构造创建多线程时,并同时传入Runnable覆盖run方法时,此时执行的run方法是