??今天主要學(xué)習(xí)多線程的相關(guān)知識嘶炭。
??一挤忙、多線程技術(shù)
- 主線程
??每個進程默認都會有一個線程追逮,這個線程我們一般叫做主線程酪刀。默認情況下,所有的代碼都是在主線程中執(zhí)行钮孵。 - 子線程
??一個進程中可以有多個線程骂倘。除了主線程以外,其他線程需要手動的添加巴席。 - threading是python中的一個內(nèi)置模塊历涝,用來支持多線程。
??Thread類的對象就是線程對象情妖,需要線程的時候睬关,就創(chuàng)建這個類或者這個類的子類對象。
Thread類創(chuàng)建線程的格式為:
??Thread(target,args)
??target:需要在子線程中調(diào)用的函數(shù)的函數(shù)名毡证。
??args:函數(shù)的實參电爹,以元祖形式傳參。
import threading
import datetime
import time
def download(file):
print(threading.currentThread())
print('開始下載:'+file, datetime.datetime.now())
time.sleep(10)
print(file+'下載結(jié)束:', datetime.datetime.now())
print('主線程中的代碼')
print(threading.currentThread())
t1 = threading.Thread(target=download, args=('終結(jié)者',))
t1.start()
??二料睛、面向?qū)ο蟮亩嗑€程技術(shù)
面向?qū)ο髮崿F(xiàn)多線程技術(shù):
??1丐箩、聲明一個類繼承Thread類
??2、重寫run方法恤煞,將需要在子線程中執(zhí)行的任務(wù)放倒run方法中
??3屎勘、在需要子線程的位置去創(chuàng)建這個類的對象,然后用對象調(diào)用start方法去執(zhí)行run中的任務(wù)居扒。
class DownloadThread(Thread):
"""下載線程類"""
def __init__(self, file):
super().__init__()
self.file = file
def run(self):
print(self.file + '開始下載:', datetime.datetime.now())
time.sleep(randint(5, 10))
print(self.file + '下載結(jié)束:', datetime.datetime.now())
t1 = DownloadThread('沉默的羔羊')
t1.start()
t2 = DownloadThread('恐怖游輪')
t2.start()