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

 

posted on 2018-11-01 16:26  老π  阅读(1671)  评论(0编辑  收藏  举报