Python多任务(2.线程的概念以及组成(创建线程的两种方式))
生活随笔
收集整理的這篇文章主要介紹了
Python多任务(2.线程的概念以及组成(创建线程的两种方式))
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
1.線程的概念
- ? ? 線程是進程中執(zhí)行代碼的一個分支,每個執(zhí)行分支(線程)要想工作執(zhí)行代碼需要CPU進行調(diào)度,也就是說線程是CPU調(diào)度的基本單位,每個進程至少都有一個線程,而這個線程就是我們通常說的主線程。
- 線程是一個獨立的執(zhí)行流,系統(tǒng)中的多個線程可以并行及并發(fā)執(zhí)行,多個線程可以共享數(shù)據(jù)與資源、利用了所謂的共享信息空間。
- ? 一個線程主要由3個元素構(gòu)成: 程序計數(shù)器、寄存器、與棧
2.Python中多線程? ----? threading模塊
? 1.導(dǎo)入線程模塊
import threading? ?2.線程類Thread參數(shù)說明
? ? Thread(group,target,name,args,kwargs)
- gourp:線程組,目前只能使用None
- target:執(zhí)行的目標(biāo)任務(wù)名
- args:以元組的方式給執(zhí)行任務(wù)傳參
- kwargs:以字典方式給執(zhí)行任務(wù)傳參
- name:線程名,一般不用設(shè)置
3.多線程的注意點
- 當(dāng)調(diào)用Thread的時候,不會創(chuàng)建線程
- 調(diào)用Thread創(chuàng)建出來的實例對象的start方法的時候,才會創(chuàng)建線程以及讓這個線程開始運行線程真正創(chuàng)建是調(diào)用start(),線程真正結(jié)束是主線程結(jié)束
- 主線程會等待所有的子線程結(jié)束后才結(jié)束
- 線程創(chuàng)建后誰先執(zhí)行是不確定的,要確定先后的順序可以通過延時的方式來保證只要主線程一死,其他的子線程就會全部結(jié)束
3.多線程的使用
下面看例子:
- 首先看看不使用多線程,使用單線程所花費的時間
- ??用threading創(chuàng)建多線程來執(zhí)行任務(wù)
t =? threading.Thread(target=函數(shù)名)? ?# 生成一個子線程對象
t.start()? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #? 然后利用這個對象調(diào)用start()方法,,來創(chuàng)建一個子線程
詳解:
? ?threading.Thread(
? ? ? group=None,name=None,args=(),kwargs={}
)
# 導(dǎo)入線程模塊 import threading import timedef eat_candy():print("--正在吃糖果--")time.sleep(1)if __name__ == '__main__':for i in range(5):t = threading.Thread(target=eat_candy) # 給target傳入函數(shù)的名字# 生成一個實例對象 t t.start() # 啟動線程,即讓線程開始執(zhí)行''' 運行的結(jié)果, 一次就執(zhí)行完成,花費1秒執(zhí)行完成 5個線程 --正在吃糖果-- --正在吃糖果-- --正在吃糖果-- --正在吃糖果-- --正在吃糖果-- '''4.獲取線程(查看線程的名稱)
threading.current_thread()5.查看線程數(shù)?
??threading.enumerate() # 返回值是一個列表,里面有當(dāng)前執(zhí)行的所有線程- 循環(huán)查看當(dāng)前運行的線程
?Thread執(zhí)行的函數(shù)結(jié)束時,線程就結(jié)束了,所以打印線程的長度是就會少一個。
- 在使用Thread時,線程是從什么時候開始創(chuàng)建的,什么時候結(jié)束
?結(jié)果:??
6. 通過繼承Thread類完成創(chuàng)建線程
運行結(jié)果:??
I'mThread-1@0
I'mThread-1@1
I'mThread-1@2
總結(jié)
以上是生活随笔為你收集整理的Python多任务(2.线程的概念以及组成(创建线程的两种方式))的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python多任务(1.多任务的介绍、并
- 下一篇: Python多任务(多线程执行带有参数的