python多线程之循环,调用函数等
1 ''' 2 线程中可以循环,可以调用函数,可以做复杂的事情 3 ''' 4 # encoding: utf-8 5 6 import threading 7 import time 8 9 10 def print_time(thread_name, step): 11 # python的time.ctime()函数把一个时间戳(按秒计算的浮点数)转化为time.asctime()的形式。 12 # 如果参数未给或者为None的时候,将会默认time.time()为参数。它的作用相当于asctime(localtime(secs))。 13 print(thread_name, ':', time.ctime(time.time())) 14 time.sleep(step) 15 16 ''' 17 1、如果子类(Puple)继承父类(Person)不做初始化,那么会自动继承父类(Person)属性name。 18 2、如果子类(Puple_Init)继承父类(Person)做了初始化,且不调用super初始化父类构造函数,那么子类(Puple_Init)不会自动继承父类的属性(name)。 19 3、如果子类(Puple_super)继承父类(Person)做了初始化,且调用了super初始化了父类的构造函数,那么子类(Puple_Super)也会继承父类的(name)属性 20 ''' 21 22 23 class MyThread(threading.Thread): 24 # 子类的构造函数必须先调用其父类的构造函数,重写run()方法。 25 def __init__(self, thid=None, thname=None, step=0.1): 26 threading.Thread.__init__(self) 27 self.step = step 28 self.thid = thid 29 self.thname = thname 30 31 def run(self): 32 for i in range(3): 33 print_time(self.thname, self.step) 34 time.sleep(self.step) 35 36 print('主线程开始!') 37 th1 = MyThread(thname='线程1', step=0.2) 38 th2 = MyThread(thname='线程2', step=0.3) 39 th3 = MyThread(thname='线程3', step=0.5) 40 41 th1.start() 42 th2.start() 43 th3.start() 44 45 th1.join() 46 th2.join() 47 th3.join() 48 print('主线程结束!')