python—多线程定义和创建(一)
一、線程的理解
線程是"輕量級""的,一個進(jìn)程中的線程使用同樣的地址空間,且共享許多資源。啟動線程的時間遠(yuǎn)遠(yuǎn)小于啟動進(jìn)程的時間和空間,而且,線程間的切換也要比進(jìn)程間的切換快得多。由于使用同樣的地址空間,所以線程之間的數(shù)據(jù)通信比較方便,一個進(jìn)程下的線程之間可以直接使用彼此的數(shù)據(jù)。當(dāng)然,這種方便性也會帶來一些問題,特別是同步問題。。
多線程對于那些I/O受限的程序特別適用。
二、線程分類:
內(nèi)核線程:由操作系統(tǒng)內(nèi)核創(chuàng)建和撤銷。
用戶線程:不需要內(nèi)核支持而在用戶程序中實現(xiàn)的線程。
三、線程的生命周期
一個線程在其生命周期內(nèi),會在不同的狀態(tài)之間轉(zhuǎn)換。在任何一個時刻,線程總是處于某種線程狀態(tài)中。雖然不同的操作系統(tǒng)可以實現(xiàn)不同的線程模型,定義不同的線程狀態(tài),但是總的說來,一個線程模型中下面幾種狀態(tài)是通用的。
1、線程的創(chuàng)建:t=threading.Thread()
2、就緒狀態(tài):已經(jīng)獲得了除CPU之外的其他資源,正在參與調(diào)度,等待被執(zhí)行,當(dāng)調(diào)度完成之后,立即運(yùn)行
3、啟動狀態(tài):獲得了CPU時間片段,正在運(yùn)行
4、等待\阻塞狀態(tài):遇到time.sleep()時,會阻塞,暫時不參與調(diào)度,等待事件發(fā)生
5、中止?fàn)顟B(tài):線程運(yùn)行結(jié)束,run函數(shù)運(yùn)行結(jié)束,等待系統(tǒng)回收其線程資源。
四、函數(shù)創(chuàng)建線程
執(zhí)行結(jié)果:
四、類創(chuàng)建線程
t=MyThread(name=s[i]) 創(chuàng)建線程,里面的參數(shù)代表線程的名字,如果不傳,系統(tǒng)會默認(rèn)有一個名字
五、多線程之得到線程的數(shù)量
執(zhí)行結(jié)果
count=len(threading.enumerate()) 獲得當(dāng)前運(yùn)行的線程的數(shù)量
為什么線程一開始為6呢?
5個子線程+1個主線程
總結(jié)
以上是生活随笔為你收集整理的python—多线程定义和创建(一)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python—多线程之守护线程
- 下一篇: python—多线程之数据混乱问题