import time
from datetime import datetime
from random import randint
from threading import Thread
defdownload(name):print(f'{name}开始下载{datetime.now()}')
time.sleep(randint(2,8))print(f'{name}下载完成{datetime.now()}')
t1 = Thread(target=download,args=('看不见的客人',))
t2 = Thread(target=download,args=('触不可及',))
t3 = Thread(target=download,args=('肖申克的救赎',))
t4 = Thread(target=download,args=('霸王别姬',))# 需求1:等到四个电影全部下载完成(四个子线程都结束)才打印’电影全部下载完成‘# 1. 阻塞线程 - 等到某个线程的任务结束才接着执行# 线程对象.join()# t1.start()# t2.start()# t3.start()# t4.start()# t1.join()# t2.join()# t3.join()# t4.join()# print('=============== 全部下载完成 ==============')# 需求2:第一个电影下载挖不出后才将开始2,3,4个电影# t1.start()# t1.join()## t2.start()# t3.start()# t4.start()# 要求所有电影都下载结束打印’全部下载完成‘
names =['肖申克的救赎','触不可及','看不见的客人','霸王别姬']# a = len(names)# i = 1# for name in names:# t = Thread(target=download, args=(name,))# t.start()# if i == a:# t.join()# print('全部下载完成')# i += 1
ts =[]for name in names:
t = Thread(target=download, args=(name,))
t.start()
ts.append(t)for t in ts:
t.join()print('全部下载完成')