Thread 多執行緒

2022-07-30 22:21:16 字數 1673 閱讀 2407

import threading

首先匯入threading 模組,這是使用多執行緒的前提。

threads = 

t1 = threading.thread(target=music,args=(u'愛情買賣',))

建立了threads陣列,建立執行緒t1,使用threading.thread()方法,在這個方法中呼叫music方法target=music,args方法對music進行傳參。 把建立好的執行緒t1裝到threads陣列中。

接著以同樣的方式建立執行緒t2,並把t2也裝到threads陣列。

for t in threads:

t.setdaemon(true)

t.start()

最後通過for迴圈遍歷陣列。(陣列被裝載了t1和t2兩個執行緒)

setdaemon()

setdaemon(true)將執行緒宣告為守護執行緒,必須在start() 方法呼叫之前設定,如果不設定為守護執行緒程式會被無限掛起。子執行緒啟動後,父執行緒也繼續執行下去,當父執行緒執行完最後一條語句print "all over %s" %ctime()後,沒有等待子執行緒,直接就退出了,同時子執行緒也一同結束。

start()

開始執行緒活動。

>>> ************************* restart ******************************==

>>>

i was listening to 愛情買賣. thu apr 17 12:51:45 2014 i was at the 阿凡達! thu apr 17 12:51:45 2014 all over thu apr 17 12:51:45 2014

從執行結果來看,子執行緒(muisc 、move )和主線程(print "all over %s" %ctime())都是同一時間啟動,但由於主線程執行完結束,所以導致子執行緒也終止。 

...

if __name__ == '__main__':

for t in threads:

t.setdaemon(true)

t.start()

t.join()

print "all over %s" %ctime()

我們只對上面的程式加了個join()方法,用於等待執行緒終止。join()的作用是,在子執行緒完成執行之前,這個子執行緒的父執行緒將一直被阻塞。

注意:  join()方法的位置是在for迴圈外的,也就是說必須等待for迴圈裡的兩個程序都結束後,才去執行主程序。

>>> ************************* restart ******************************==

>>>

i was listening to 愛情買賣. thu apr 17 13:04:11 2014 i was at the 阿凡達! thu apr 17 13:04:11 2014

i was listening to 愛情買賣. thu apr 17 13:04:12 2014

i was at the 阿凡達! thu apr 17 13:04:16 2014

all over thu apr 17 13:04:21 2014

從執行結果可看到,music 和move 是同時啟動的。

開始時間4分11秒,直到呼叫主程序為4分22秒,總耗時為10秒。

多執行緒 Thread

如果從另外乙個執行緒操作windows窗體上的控制項,就會與主線程產生競爭,造成不可預料的後果,甚至死鎖。因此,windows gui程式設計有乙個規則 只能通過建立控制項的執行緒來操作控制項的資料!實現方法 要從執行緒外操作windows控制項,那麼就要使用invoke或begininvoke方法...

多執行緒 Thread

static void main string args t.start console.writeline 主線程繼續執行!主線程結束,後台執行緒會自動結束,不管有沒有執行完成 thread.sleep 1500 console.writeline 主線程結束 console.readkey st...

python 多執行緒thread

python通過thread模組支援多執行緒,語法也很簡潔,現在通過乙個例項來看一下python中的多執行緒 import thread import time 保證只額外啟動乙個執行緒 isrunning false 啟動的時間控制,測試時間是23點44分,所以定的是這個時間,可以用於指定定時任務...