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 ******************************==從執行結果來看,子執行緒(muisc 、move )和主線程(print "all over %s" %ctime())都是同一時間啟動,但由於主線程執行完結束,所以導致子執行緒也終止。>>>
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
...我們只對上面的程式加了個join()方法,用於等待執行緒終止。join()的作用是,在子執行緒完成執行之前,這個子執行緒的父執行緒將一直被阻塞。if __name__ == '__main__':
for t in threads:
t.setdaemon(true)
t.start()
t.join()
print "all over %s" %ctime()
注意: join()方法的位置是在for迴圈外的,也就是說必須等待for迴圈裡的兩個程序都結束後,才去執行主程序。
>>> ************************* restart ******************************==從執行結果可看到,music 和move 是同時啟動的。>>>
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
開始時間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分,所以定的是這個時間,可以用於指定定時任務...