Python作為目前跨平臺應用最火的程式語言,已經被很多行業的研究人員所使用,其實與其他程式語言相同,Python也只支援多執行緒程式設計,而且Python對於執行緒的支援也提供了很多方便的方法可以直接呼叫,從而可以很好的控制執行緒的執行。
下面咱們就來聊聊Python對於執行緒所提供的join()方法吧。
join()方法的功能是可以讓一個執行緒等待另一個執行緒的完成,是Thread模組所提供的,例如當在一個程式執行流中呼叫其他執行緒的join()方法時,呼叫執行緒就會被阻塞,一直到被join()方法所加入的join執行緒執行完成。
其實呢,join()方法通常由使用執行緒的程式呼叫,可以理解為將一個大問題劃分為很多小問題,然後為每個小問題分配一個執行緒,當這些小問題都執行處理完畢後,才會回到主程式進一步進行接下來的操作。
為了大家能夠比較清晰的理解,咱們來看一下“栗子”吧:
上面咱們所寫的程式中,可以看到一共有三個執行緒,在咱們所寫的主程式中開始位置就啟動了咱們所命名為“新執行緒”的子執行緒,此時這個執行緒就會和主執行緒進行併發執行,然後當主執行緒的迴圈變數i等於5時,就會啟動咱們所命名為“被Join的執行緒”的執行緒,這個執行緒並不會和主執行緒併發執行,主執行緒必須等到這個執行緒執行結束後才會向下執行,所以在“被Join的執行緒”的執行緒執行時,實際上是隻有兩個子執行緒併發執行的,分別是“新執行緒”執行緒和“被Join的執行緒”執行緒,而對於主執行緒此時則是處於等待狀態,這就是join()方法的作用。
好啦,下面咱們就呼叫Python直譯器來看一下上面咱們所編寫的程式的效果吧:
執行上面程式,就會輸出如下三個執行緒的併發執行情況:
觀察上面的輸出可以看到,主執行緒執行到i==5時,程式啟動並join了名為“被Join的執行緒”的執行緒,所以主執行緒將一直處於阻塞狀態,一直到名為“被Join的執行緒”的執行緒執行完成才會跳到主執行緒“MainThread”中。
最後咱們再來看一下Thread的join()方法的引數吧,其實join()是有引數的,join的語法結構為join(timeout=None),可以看到join()方法有一個timeout引數,其預設值為None,而引數timeout可以進行賦值,其含義是指定等待被join的執行緒的時間最長為timeout秒,也就是說當在timeout秒內被join的執行緒還沒有執行結束的話,就不再進行等待了。
好啦,以上就是今天咱們所聊的關於Python控制執行緒中的join執行緒的相關知識,希望大家能夠學會join()方法的呼叫,今天就聊到這吧,下次再見哦![再見]