1. 程式人生 > >萌新python多線程

萌新python多線程

def cda cto 出了 都沒有 相同 天都 數據 意思

剛開始學習多線程的時候鬧了個笑話在使用python線程打印東西的時候發現自己定的的線程數據沒有打印,找半天都沒有找到問題,也沒好意思問,自己憋了半天才發現問題!
代碼如下:

import threading

def SayHi():
    print(‘say hi !‘)

def SeyHello():
    print(‘say hello !‘)

print(‘start‘)
threading._start_new_thread(SayHi,())
threading._start_new_thread(SeyHello,())
print(‘end‘)

發現這樣的輸出結果竟然沒有函數的輸出結果,

技術分享圖片
一直沒有找到原因,然後就在網上找例子,照著網上的例子來做都沒問題,但是我自己寫就有問題,然後發現網上的例子中多線程,多進程的都導入了時間模塊,我就出了時間沒加入到腳本中其他的一些都是相同的,然後試著加入時間模塊來做,結果發現還是沒有輸出.
代碼如下:

import threading
from time import sleep

def SayHi():
    sleep(2)
    print(‘say hi !‘)

def SeyHello():
    sleep(2)
    print(‘say hello !‘)

print(‘start‘)
threading._start_new_thread(SayHi,())
threading._start_new_thread(SeyHello,())
print(‘end‘)

技術分享圖片

但是在一次無意中發現了這樣偶爾也能把函數內的數值輸出出來,然後一想是不是時間不夠?然後在最後面加入了時間終於出來了.

import threading
from time import sleep

def SayHi():
    sleep(2)
    print(‘say hi !‘)

def SeyHello():
    sleep(2)
    print(‘say hello !‘)

print(‘start‘)
threading._start_new_thread(SayHi,())
threading._start_new_thread(SeyHello,())
print(‘end‘)
sleep(5)

技術分享圖片

總結:
由於開啟的線程,他們的結束時間可能要大於主進程的時間所以主進程如果不等線程的結束而先於他們結束,主進程一死他們就不能輸出了,所以這裏要等線程結束了,主進程在結束才能看到輸出結果的.

萌新python多線程