#列表(容器)当做实参传递到线程中(暂未加锁)
#总结:
'''
在一个进程内的所有线程共享全局变量,能够在不适用其它方式的前提下完成多线程之间的数据共享
缺点:线程是对全局变量的随意更改可能造成多线程之间对全局变量引用比较混乱(线程安全成了问题)
'''
import time,random,copy
def work1(download_list,finish_list):
# #在子线程中可以对列表进行增删改查
# for i in range(len(num)):
# print('——in work1--num:%d'%num[i])
# time.sleep(1)
# num.remove(num[0])
# num.append(44)
# print(num)
#每次从下载列表当中去取第一个,进行下载
copy_list=copy.copy(download_list)
for file in copy_list:
print('——in work1--download:%d' %file)
time.sleep(random.random())
#下载完成之后
#1、任务列表中移除已经下载的元素
download_list.remove(file)
#将已经完成的任务添加到finish_list
finish_list.append(file)
if __name__ == "__main__":
# 下载任务列表
download_list=[11,22,33]
total=len(download_list)
#完成任务列表
finish_list=[]
#下载进度
# progress = (len(finish_list) / len(download_list)) * 100
#线程
t1=threading.Thread(target=work1,args=(download_list,finish_list))
t1.start()
#获取下载进度
while True:
print(download_list, finish_list)
time.sleep(1)
progress = (len(finish_list) / total)*100
print('当前下载进度为:%.2f %%'%progress)
time.sleep(0.5)
if progress == 100:
print("全部任务下载完成!")
break
——in work1--download:11 [11, 22, 33] [] ——in work1--download:22 当前下载进度为:33.33 % ——in work1--download:33 [33] [11, 22] 当前下载进度为:100.00 % 全部任务下载完成!