剛開始學習多線程的時候鬧了個笑話在使用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)
總結:
由于開啟的線程,他們的結束時間可能要大于主進程的時間所以主進程如果不等線程的結束而先于他們結束,主進程一死他們就不能輸出了,所以這里要等線程結束了,主進程在結束才能看到輸出結果的.