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