根据需求定义线程类
import threading
from time import *
#创建线程类,继承threading.Thread类
# 初始化func,args,name等参数,这里TestThread类重写父类threading.Thread了__init__方法
# super()函数:解决了子类就算重写父类方法或属性仍然可以继续使用父类的方法和属性。
class Mythread(threading.Thread):
def __init__(self,func,args,name=''):
threading.Thread.__init__(self)
self.func =func
self.args = args
self.name =name
#args入参是元组,Python有个特性,就是入参是元组时,元组前面要加*,Python2的是apply()函数
def run(self):
self.func(*self.args)
def surper_player(file_,time):
for i in range(2):
print("开始播放:%s,现在是%s"%(file_,ctime()))
sleep(time)
lists ={"love.mp3":3,"loving is love!.mp4":5,"trueu.mp3":3}
#创建线程列表,用于装载线程
threads =[]
files =range(len(lists))
for file_,time in lists.items():
#实例化线程类,创建线程组。调用对象、位置参数,元组、线程别名
t = Mythread(surper_player,(file_,time),surper_player.__name__)
#把线程组加进列表
threads.append(t)
if __name__ =="__main__":
for i in files:
#启动每一个线程
threads[i].start()
for i in files:
#守护每一个线程
threads[i].join()