1.1 什么是多線程 Threading
多線程可簡單理解為同時執(zhí)行多個任務(wù)。
多進程和多線程都可以執(zhí)行多個任務(wù),線程是進程的一部分。線程的特點是線程之間可以共享內(nèi)存和變量,資源消耗少(不過在Unix環(huán)境中,多進程和多線程資源調(diào)度消耗差距不明顯,Unix調(diào)度較快),缺點是線程之間的同步和加鎖比較麻煩。
1.2 添加線程 Thread
導(dǎo)入模塊
import threading
獲取已激活的線程數(shù)
threading.active_count()
查看所有線程信息
threading.enumerate()
查看現(xiàn)在正在運行的線程
threading.current_thread()
添加線程,threading.Thread()接收參數(shù)target代表這個線程要完成的任務(wù),需自行定義
def thread_job(): print('This is a thread of %s' % threading.current_thread())def main(): thread = threading.Thread(target=thread_job,) # 定義線程 thread.start() # 讓線程開始工作 if __name__ == '__main__': main()1.3 join 功能
因為線程是同時進行的,使用join功能可讓線程完成后再進行下一步操作,即阻塞調(diào)用線程,直到隊列中的所有任務(wù)被處理掉。
import threadingimport timedef thread_job(): print('T1 start/n') for i in range(10): time.sleep(0.1) print('T1 finish/n')def T2_job(): print('T2 start/n') print('T2 finish/n')def main(): added_thread=threading.Thread(target=thread_job,name='T1') thread2=threading.Thread(target=T2_job,name='T2') added_thread.start() #added_thread.join() thread2.start() #thread2.join() print('all done/n')if __name__=='__main__': main()例子如上所示,當(dāng)不使用join功能的時候,結(jié)果如下圖所示:

當(dāng)執(zhí)行了join功能之后,T1運行完之后才運行T2,之后再運行print(‘a(chǎn)ll done')

1.4 儲存進程結(jié)果 queue
queue是python標(biāo)準(zhǔn)庫中的線程安全的隊列(FIFO)實現(xiàn),提供了一個適用于多線程編程的先進先出的數(shù)據(jù)結(jié)構(gòu),即隊列,用來在生產(chǎn)者和消費者線程之間的信息傳遞
新聞熱點
疑難解答