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()函數的時候,早已蓄勢待發的子線程馬上開始它的任務。
注意!主線程會等待子線程,也就是說當子線程的任務還沒執行完的時候,主線程是不能退出程序的,因爲只要主線程一掛掉,子線程一個都不能活。
今天就先到這裏。
謝謝你來看我!!你的關注對我非常重要!