多執行緒-threading
阿新 • • 發佈:2018-11-26
python的thread模組是比較底層的模組,python的threading模組是對thread做了一些包裝的,可以更加方便的被使用
1. 使用threading模組
單執行緒執行
#coding=utf-8
import time
def saySorry():
print("親愛的,我錯了,我能吃飯了嗎?")
time.sleep(1)
if __name__ == "__main__":
for i in range(5):
saySorry()
執行結果:
多執行緒執行
#coding=utf-8 import threading import time def saySorry(): print("親愛的,我錯了,我能吃飯了嗎?") time.sleep(1) if __name__ == "__main__": for i in range(5): t = threading.Thread(target=saySorry) t.start() #啟動執行緒,即讓執行緒開始執行
執行結果:
說明
1. 可以明顯看出使用了多執行緒併發的操作,花費時間要短很多
2. 建立好的執行緒,需要呼叫 start() 方法來啟動
2. 主執行緒會等待所有的子執行緒結束後才結束
#coding=utf-8 import threading from time import sleep,ctime def sing(): for i in range(3): print("正在唱歌...%d"%i) sleep(1) def dance(): for i in range(3): print("正在跳舞...%d"%i) sleep(1) if __name__ == '__main__': print('---開始---:%s'%ctime()) t1 = threading.Thread(target=sing) t2 = threading.Thread(target=dance) t1.start() t2.start() #sleep(5) # 遮蔽此行程式碼,試試看,程式是否會立馬結束? print('---結束---:%s'%ctime())
3. 檢視執行緒數量
#coding=utf-8 import threading from time import sleep,ctime def sing(): for i in range(3): print("正在唱歌...%d"%i) sleep(1) def dance(): for i in range(3): print("正在跳舞...%d"%i) sleep(1) if __name__ == '__main__': print('---開始---:%s'%ctime()) t1 = threading.Thread(target=sing) t2 = threading.Thread(target=dance) t1.start() t2.start() while True: length = len(threading.enumerate()) print('當前執行的執行緒數為:%d'%length) if length<=1: break sleep(0.5)