边听音乐,边看电影。串行需要18秒,并行需要10秒
from time import ctime,sleep import threading def music(func): for i in range(2): print('开始听音乐%s 时间:%s'%(func,ctime())) sleep(4) print('结束听音乐 时间:%s'%ctime()) def movie(func): for i in range(2): print('开始看电影%s 时间:%s'%(func,ctime())) sleep(5) print('结束看电影 时间:%s'%ctime()) threads = [] t1 = threading.Thread(target=music,args=('我的祖国',)) threads.append(t1) t2 = threading.Thread(target=movie,args=('上甘岭',)) threads.append(t2) if __name__ == '__main__': print('现在开始 时间:%s'%ctime()) for t in threads: #t.setDaemon(True) #如果此处设置Daemon,表示如果主线程结束 则子线程跟随立即结束不再往下执行 t.start() #t.join() t2.join() #因为t2需要的时长比t1多,所这里要t2.join等待t2完结后才打印下面的‘全部结束’,假如t1执行时间比t2长则应该t1.join print('全部结束 时间:%s'%ctime())
输出:
现在开始 时间:Wed Dec 15 23:21:20 2021
开始听音乐我的祖国 时间:Wed Dec 15 23:21:20 2021
开始看电影上甘岭 时间:Wed Dec 15 23:21:20 2021
结束听音乐 时间:Wed Dec 15 23:21:24 2021
开始听音乐我的祖国 时间:Wed Dec 15 23:21:24 2021
结束看电影 时间:Wed Dec 15 23:21:25 2021
开始看电影上甘岭 时间:Wed Dec 15 23:21:25 2021
结束听音乐 时间:Wed Dec 15 23:21:28 2021
结束看电影 时间:Wed Dec 15 23:21:30 2021
全部结束 时间:Wed Dec 15 23:21:30 2021