从Thread类继承
通过继承Thread来实现多线程可以提高对线程任务的个性化定制,具体实现如下:
实例代码:
# 从Thread类继承 import threading from time import sleep,ctime # 线程类,从Thread类继承而来。 class MyThread(threading.Thread): # 重写父类的构造方法,其中,func是线程函数,args是传入线程函数的参数,name是线程名称 def __init__(self,func,args,name=''): # 使用super函数调用父类的构造方法,并传入相应的参数值。 super().__init__(target = func,name=name,args=args) # 重写父类的run方法 def run(self): self._target(*self._args) # 线程函数 def fun(index,sec): print('开始执行{},时间:{}'.format(index,ctime())) # 休眠sec秒 sleep(sec) print('执行完毕{},时间:{}'.format(index,ctime())) def fun2(a,b,c): print('2开始执行,时间:{}'.format(ctime())) # 休眠sec秒 sleep(a+b+c) print(a+b+c) print('2执行完毕,时间:{}'.format(ctime())) def main(): print('开始:',ctime()) # 创建第一个线程,并制定线程名称为“线程1” thread1 = MyThread(fun,(10,4),'线程1') thread2 = MyThread(fun2,(4,6,2),'线程2') thread1.start() thread2.start() print(thread1.name) print(thread2.name) thread1.join() thread2.join() print('结束:',ctime()) if __name__ == '__main__': main()
实例代码2:(更简单些)
class MyThread(threading.Thread): def __init__(self, num): threading.Thread.__init__(self) self.num = num def run(self): # 定义每个线程要运行的函数,该函数执行完,该线程也就执行完。 print("running on number:%s" % self.num) sleep(3) if __name__ == '__main__': t1 = MyThread(1) t2 = MyThread(2) t1.start() t2.start()