Python線程專題1:多線程使用的必要性

上一篇文章: Python線程專題縱覽篇
下一篇文章: Python線程專題2:多線程共享全局變量

在引入多線程以前,咱們先來看一個很是簡單的實例。python

實例:segmentfault

#單線程實例
import time

def mark(index):
    print("Mark的帥,遠近聞名,第%d次傳播"%index)
    #暫停一秒,否則看不到效果哦
    time.sleep(1)

if __name__=="__main__":
    for i in range(6):
        mark(i)

結果:按照順序依次打印多線程

圖片描述

上面是單線程顯示效果,如今咱們來用多線程處理一下。在這以前,咱們應該要知道,thread模塊是python比較底層的模塊,spa

爲了方便咱們控制thread,python又使用threading模塊對thread進行了封裝,下面就用到了threading模塊。線程

實例:code

#多線程實例
import time
import threading

def mark(index):
    print("Mark的帥,遠近聞名,第%d次傳播"%index)
    #暫停一秒,否則看不到效果哦
    time.sleep(1)

if __name__=="__main__":
    for i in range(6):
        #定義子線程
        t=threading.Thread(target=mark,args=(i,))
        #啓動子線程
        t.start()

效果:blog

圖片描述

看到效果了,原來的單線程,順序執行,至少須要6s,而使用多線程,差很少1秒多一點就完成,可見運行效率的差距,這也是咱們爲何要使用多線程的緣由。圖片

二、主線程會等待全部子線程執行完成才結束

要驗證這一點很簡單,直接看代碼:get

#主線程會等待全部子線程執行完成才結束
import time
import threading

def mark():
    #暫停3秒
    time.sleep(3)
    print("Mark的帥,遠近聞")

if __name__=="__main__":
    print("程序開始執行了")
    # 定義子線程
    t = threading.Thread(target=mark)
    # 啓動子線程
    t.start()
    print("單線程程序到這裏主線程就會結束了,多線程呢,看看吧")

效果:it

圖片描述

相關文章
相關標籤/搜索