python100day - 26day - Thread
1、单线程
import time
from datatime import datatime
def download(name):
print(f'{name}开始下载!{datatime.now()}')
time.sleep(2)
print(f'{name}下载结束!{datatime.now()}')
download('信条')
download('十二生肖')
download('当幸福来敲门')
2、多线程基础
import time
from datatime import datatime
from threading import Thread
进程默认有一个线程,这个线程叫主线程;其他的线程都叫子线程。python中threading模块中Thread类的对象就是线程对象(程序中需要多少个线程就创建多少个Thraed类或者它的子类的对象)
def download(name):
print(f'{name}开始下载!{datatime.now()}')
time.sleep(2)
print(f'{name}结束下载!{datatime.now()}')
t1 = Thread(target=download, args=('沉默的羔羊',))
t2 = Thread(target=download, args=('触不可及',))
t3 = Thread(target=download, args=('星际穿越',))
t4 = Thread(target=download, args=('逃学威龙',))
t1.start()
t2.start()
t3.start()
t4.start()
3、阻塞(join)
import time
from datetime import datetime
from threading import Thread
from random import randint
def download(name):
print(f'{name}开始下载!{datetime.now()}')
time.sleep(randint(2, 7))
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=('功夫',))
t5 = Thread(target=download, args=('逃学威龙',))
"""
线程对象.join()
代码段
代码段会在线程对象对应的线程结束后执行
"""
def demo2():
t1.start()
t2.start()
t1.join()
t2.join()
t3.start()
t4.start()
t5.start()
def demo1():
start = time.time()
t1.start()
t2.start()
t3.start()
t4.start()
t5.start()
t1.join()
t2.join()
t3.join()
t4.join()
t5.join()
print('===========================')
end = time.time()
print('下载所有电影用时:', end-start)
demo1()