一:什么是多執行緒
執行緒是作業系統能夠進行運算調度的最小單位;它被包含在行程之中,是行程中的實際運作單位,
多執行緒,是指從軟體或者硬體上實作多個執行緒并發執行的技術,具有多執行緒能力的計算機因有硬體支持而能夠在同一時間執行多于一個執行緒,進而提升整體處理性能,
簡單來說:執行緒是程式中一個單一的順序控制流程;而多執行緒就是在單個程式中同時運行多個執行緒來完成不同的作業,
多執行緒是為了同步完成多項任務,不是為了提高運行效率,而是為了提高資源使用效率來提高系統的效率,多執行緒是在同一時間需要完成多項任務的時候實作的,
二:多執行緒優缺點
優點:
- 使用執行緒可以把占據時間長的程式中的任務放到后臺去處理
- 程式的運行效率可能會提高
- 可以分別設定各個任務的優先級以優化性能
- 可以讓同一個程式的不同部分并發執行,釋放一些珍貴的資源如記憶體占用等
缺點
- 更多的執行緒需要更多的記憶體空間
- 因為多執行緒需要開辟記憶體,而且執行緒切換需要時間因此會很消耗系統記憶體
- 由于多個執行緒之間存在共享資料,因此容易出現執行緒死鎖的情況
- 多執行緒需要協調和管理,需要CPU時間跟蹤執行緒,執行緒的終止會對程式產生影響
三:python threading 模塊
threading模塊是python的內置庫,所以無需用pip去下載直接呼叫就行
import threading
注意這里的Thread是大寫,因為python對字母的大小寫十分敏感
四:多執行緒開發
1.創建一個Thread物件,并封裝執行緒
t = threading.Thread(target=calculate,args=(n,))
第一個引數是執行緒函式變數,第二個引數args是一個陣列變數引數,如果只傳遞一個值,就只需要n, 如果需要傳遞多個引數,那么還可以繼續傳遞下去其他的引數,其中的逗號不能少,元組中只包含一個元素時,需要在元素后面添加逗號
2.常見方法
t.start() #執行緒準備,開始執行
t.join() #等待執行緒任務結束,在向下執行
3.執行緒的簡單運用(節省時間)
一個執行緒(代碼依次執行)
```plaintext
import time
def calculate(n):
for x in n:
time.sleep(1)
print('除法',x%2)
def calculate2(n):
for x in n:
time.sleep(1)
print('乘法',x*2)
n=[1,2,3,4,5,6,7,8]
start=time.time()
calculate(n)
print()
calculate2(n)
end=time.time()
print(end-start)
單執行緒運行倆函式所需的時間為16.106837511062622s
多執行緒
import threading
import time
def calculate(n):
for x in n:
time.sleep(1)
print('除法',x%2)
def calculate2(n):
for x in n:
time.sleep(1)
print('乘法',x*2)
n=[1,2,3,4,5,6,7,8]
start=time.time()
t1 = threading.Thread(target=calculate,args=(n,))
t2 = threading.Thread(target=calculate2,args=(n,))
t1.start()
time.sleep(2)
t2.start()
t1.join()
t2.join()
end = time.time()
print(end-start)
多執行緒所需時間為10.068055391311646s
五:總結:
以上是多執行緒中最最最基礎的東西
相比之下多執行緒的效率要比單執行緒的效率要高,也比較節約時間
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/550849.html
標籤:其他
下一篇:返回列表
