python多任務之——線程簡述

python多線程複習

無論你使用什麼語言,多線程一直都有着舉足輕重的地位,只要線程開得多,任務還能湊幾桌(頭髮還得不停脫),哈哈哈開個玩笑。那麼何謂多線程?

import time


def sing():
    """唱歌 5秒鐘"""
    for i in range(5):
        print("------正在唱:妹妹你大膽滴往前走啊------")
        time.sleep(1)


def dance():
    """跳舞 5秒鐘"""
    for i in range(5):
        print("------正在跳舞------")
        time.sleep(1)


def main():
    sing()
    dance()


if __name__ == '__main__':
    main()

我們的程序默認只有一個主線程,主線程一條一條語句執行,於是上面這串代碼的結果是這樣的
單任務

接下來我們簡單的加上一個進程

import time
import threading


def sing():
    """唱歌 5秒鐘"""
    for i in range(5):
        print("------正在唱:妹妹你大膽滴往前走啊------")
        time.sleep(1)


def dance():
    """跳舞 5秒鐘"""
    for i in range(5):
        print("------正在跳舞------")
        time.sleep(1)


def main():
    t1 = threading.Thread(target=sing)
    t2 = threading.Thread(target=dance)
    t1.start()
    t2.start()


if __name__ == '__main__':
    main()

立馬鳥槍換炮
多進程
以上就是實現了兩個進程同時運行的效果

這裏說一下原理:
我們平時寫程序,算法和數據結構之類的,都沒有用到多進程,程序默認就只有一個線程——主線程,這個主進程從起點向下一條一條執行語句,如果是c類語言就從main函數開始執行,一條一條的來。當我們加入多任務之後,主線程只要執行到產生多線程的語句就會創造出子線程來,在我這個程序中就是這裏

t1 = threading.Thread(target=sing)
t2 = threading.Thread(target=dance)
t1.start()
t2.start()

當執行到第一句的話,馬上就創建一個子線程跑到target, 即sing函數那裏去待命,同理,主線程到了t2那裏也會創建出一個子線程跑到dance函數那裏去待命,當主線程一執行到start()函數的時候,早已蓄勢待發的子線程馬上開始它的任務。

注意!主線程會等待子線程,也就是說當子線程的任務還沒執行完的時候,主線程是不能退出程序的,因爲只要主線程一掛掉,子線程一個都不能活。

今天就先到這裏。
謝謝你來看我!!你的關注對我非常重要!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章