1. 程式人生 > >多執行緒-threading

多執行緒-threading

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)