新聞中心
Python線程是進程中的一個實體,是被系統(tǒng)獨立調(diào)度和分派的基本單位,線程自己不擁有系統(tǒng)資源,只擁有一點在運行中必不可少的資源,希望大家能夠從中得到自己想要的知識。

創(chuàng)新互聯(lián)是專業(yè)的尖山網(wǎng)站建設公司,尖山接單;提供網(wǎng)站設計、成都網(wǎng)站設計,網(wǎng)頁設計,網(wǎng)站設計,建網(wǎng)站,PHP網(wǎng)站建設等專業(yè)做網(wǎng)站服務;采用PHP框架,可快速的進行尖山網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團隊,希望更多企業(yè)前來合作!
我們在做軟件開發(fā)的時候很多要用到多線程技術(shù)。例如如果做一個下載軟件象flashget就要用到、象在線視頻工具realplayer也要用到因為要同時下載media stream還要播放。其實例子是很多的。
線程相對進程來說是“輕量級”的,操作系統(tǒng)用較少的資源創(chuàng)建和管理線程。程序中的線程在相同的內(nèi)存空間中執(zhí)行,并共享許多相同的資源。在python中如何創(chuàng)建一個線程對象:如果你要創(chuàng)建一個線程對象,很簡單,只要你的類繼承threading.Thread,然后在__init__里首先調(diào)用threading.Thread的__init__方法即可:
- t1 = mythread('t1')
- print t1.getName(),t1.isDaemon()
- t1.setDaemon(True)
- print t1.getName(),t1.isDaemon()
- t1.start()
- print 'main thread exit'
這才僅僅是個空線程,我可不是要他拉空車的,他可得給我干點實在活。很簡單,重寫類的run()方法即可,把你要在線程執(zhí)行時做的事情都放到里面。以上代碼我們讓這個線程在執(zhí)行之后每隔1秒輸出一次信息到屏幕,10次后結(jié)束getName()是threading.Thread類的一個方法,用來獲得這個線程對象的name。
還有一個方法setName()當然就是來設置這個線程對象的name的了。如果要創(chuàng)建一個線程,首先就要先創(chuàng)建一個線程對象。一個線程對象被創(chuàng)建后,他就處于“born”(誕生狀態(tài)),如何讓這個線程對象開始運行呢?只要調(diào)用線程對象的start()方法即可:
奇怪嗎?不是已經(jīng)start了嗎?為什么不稱為“running”狀態(tài)呢?其實是有原因的。因為我們的計算機一般是不具有真正并行處理能力的。我們所謂的多線程只是把時間分成片段,然后隔一個時間段就讓一個線程執(zhí)行一下,然后進入“sleeping ”狀態(tài),然后喚醒另一個在“sleeping”的線程。
如此循環(huán)runnable->sleeping->runnable... ,只是因為計算機執(zhí)行速度很快,而時間片段間隔很小,我們感受不到,以為是同時進行的。所以說一個線程在start了之后只是處在了可以運行的狀態(tài),他什么時候運行還是由系統(tǒng)來進行調(diào)度的。#t#
那一個線程什么時候會Python線程呢?一般來說當線程對象的run方法執(zhí)行結(jié)束或者在執(zhí)行中拋出異常的話,那么這個線程就會結(jié)束了。系統(tǒng)會自動對“dead”狀態(tài)線程進行清理。如果一個線程t1在執(zhí)行的過程中需要等待另一個線程t2執(zhí)行結(jié)束后才能運行的話那就可以在t1在調(diào)用t2的join()方法。
這樣t1在執(zhí)行到Python線程語句后就會等待t2結(jié)束后才會繼續(xù)運行,如果一個進程的主線程運行完畢而子線程還在執(zhí)行的話,那么進程就不會退出,直到所有子線程結(jié)束為止,如何讓主線程結(jié)束的時候其他子線程也乖乖的跟老大撤退呢?
那就要把那些不聽話的人設置為聽話的小弟,使用線程對象的setDaemon()方法,參數(shù)為bool型。True的話就代表你要聽話,我老大(主線程)扯呼,你也要跟著撤,不能拖后腿。如果是False的話就不用那么聽話了,老大允許你們將在外軍命有所不受的。需要注意的是setDaemon()方法必須在線程對象沒有調(diào)用start()方法之前調(diào)用,否則沒效果。
當前名稱:對Python線程實體說明介紹
當前鏈接:http://www.dlmjj.cn/article/dpjdgip.html


咨詢
建站咨詢
