最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python多線程編程方式分析示例詳解

 更新時間:2013年12月06日 10:07:19   作者:  
本文介紹一下有關(guān)Python多線程的相關(guān)應用技巧,線程相對進程來說是"輕量級"的,操作系統(tǒng)用較少的資源創(chuàng)建和管理線程。程序中的線程在相同的內(nèi)存空間中執(zhí)行,并共享許多相同的資源,下面看使用方法

在Python多線程中如何創(chuàng)建一個線程對象

如果你要創(chuàng)建一個線程對象,很簡單,只要你的類繼承threading.Thread,然后在__init__里首先調(diào)用threading.Thread的__init__方法即可

復制代碼 代碼如下:

import threading 
class mythread(threading.Thread): 
def __init__(self, threadname): 
threading.Thread.__init__(self, name = threadname) 

這才僅僅是個空線程,我可不是要他拉空車的,他可得給我干點實在活。很簡單,重寫類的run()方法即可,把你要在線程執(zhí)行時做的事情都放到里面

復制代碼 代碼如下:

import threading 
import time 
class mythread(threading.Thread): 
def __init__(…): 
…. 
def run(self): 
for i in range(10): 
print self.getName, i 
time.sleep(1)

以上代碼我們讓這個線程在執(zhí)行之后每隔1秒輸出一次信息到屏幕,10次后結(jié)束
getName()是threading.Thread類的一個方法,用來獲得這個線程對象的name。還有一個方法setName()當然就是來設置這個線程對象的name的了。
如果要創(chuàng)建一個線程,首先就要先創(chuàng)建一個線程對象
mythreadmythread1 = mythread('mythread 1′)
一個線程對象被創(chuàng)建后,他就處于“born”(誕生狀態(tài))
如何讓這個Python多線程對象開始運行呢?只要調(diào)用線程對象的start()方法即可
mythread1.start()
現(xiàn)在線程就處于“ready”狀態(tài)或者也稱為“runnable”狀態(tài)。
奇怪嗎?不是已經(jīng)start了嗎?為什么不稱為“running”狀態(tài)呢?其實是有原因的。因為我們的計算機一般是不具有真正并行處理能力的。我們所謂的Python多線程只是把時間分成片段,然后隔一個時間段就讓一個線程執(zhí)行一下,然后進入“sleeping ”狀態(tài),然后喚醒另一個在“sleeping”的線程,如此循環(huán)runnable->sleeping->runnable… ,只是因為計算機執(zhí)行速度很快,而時間片段間隔很小,我們感受不到,以為是同時進行的。所以說一個線程在start了之后只是處在了可以運行的狀態(tài),他什么時候運行還是由系統(tǒng)來進行調(diào)度的。
那一個線程什么時候會“dead”呢?一般來說當線程對象的run方法執(zhí)行結(jié)束或者在執(zhí)行中拋出異常的話,那么這個線程就會結(jié)束了。系統(tǒng)會自動對“dead”狀態(tài)線程進行清理。
如果一個線程t1在執(zhí)行的過程中需要等待另一個線程t2執(zhí)行結(jié)束后才能運行的話那就可以在t1在調(diào)用t2的join()方法

復制代碼 代碼如下:

def t1(…): 
… 
t2.join() 

這樣t1在執(zhí)行到t2.join()語句后就會等待t2結(jié)束后才會繼續(xù)運行。
但是假如t1是個死循環(huán)的話那么等待就沒有意義了,那怎么辦呢?可以在調(diào)用t2的join()方法的時候給一個浮點數(shù)做超時參數(shù),這樣這個線程就不會等到花兒也謝了了。我等你10s,你不回來我還不允許我改嫁???

復制代碼 代碼如下:

def t1(…): 
… 
t2.join(10) 

如果一個進程的主線程運行完畢而子線程還在執(zhí)行的話,那么進程就不會退出,直到所有子線程結(jié)束為止,如何讓主線程結(jié)束的時候其他子線程也乖乖的跟老大撤退呢?那就要把那些不聽話的人設置為聽話的小弟,使用線程對象的setDaemon()方法,參數(shù)為bool型。True的話就代表你要聽話,我老大(主線程)扯呼,你也要跟著撤,不能拖后腿。如果是False的話就不用那么聽話了,老大允許你們將在外軍命有所不受的。需要注意的是setDaemon()方法必須在線程對象沒有調(diào)用start()方法之前調(diào)用,否則沒效果。

復制代碼 代碼如下:

t1 = mythread('t1′) 
print t1.getName(),t1.isDaemon() 
t1.setDaemon(True) 
print t1.getName(),t1.isDaemon() 
t1.start() 
print ‘main thread exit'

當執(zhí)行到 print 'main thread exit'后,主線程就退出了,當然t1這個線程也跟著結(jié)束了。但是如果不使用t1線程對象的setDaemon()方法的話,即便主線程結(jié)束了,還要等待t1線程自己結(jié)束才能退出進程。isDaemon()是用來獲得一個線程對象的Daemonflag狀態(tài)的。

如何來獲得與Python多線程有關(guān)的信息呢?

獲得當前正在運行的線程的引用
running = threading.currentThread()

獲得當前所有活動對象(即run方法開始但是未終止的任何線程)的一個列表
threadlist = threading.enumerate()

獲得這個列表的長度
threadcount = threading.activeCount()
查看一個線程對象的狀態(tài)調(diào)用這個線程對象的isAlive()方法,返回1代表處于"runnable"狀態(tài)且沒有"dead"

threadflag = threading.isAlive()

相關(guān)文章

  • Python內(nèi)置方法和屬性應用:反射和單例(推薦)

    Python內(nèi)置方法和屬性應用:反射和單例(推薦)

    這篇文章主要介紹了Python內(nèi)置方法和屬性應用:反射和單例,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-06-06
  • python代碼 輸入數(shù)字使其反向輸出的方法

    python代碼 輸入數(shù)字使其反向輸出的方法

    今天小編就為大家分享一篇python代碼 輸入數(shù)字使其反向輸出的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-12-12
  • Python線性網(wǎng)絡實現(xiàn)分類糖尿病病例

    Python線性網(wǎng)絡實現(xiàn)分類糖尿病病例

    什么是線性規(guī)劃?想象一下,您有一個線性方程組和不等式系統(tǒng)。這樣的系統(tǒng)通常有許多可能的解決方案。線性規(guī)劃是一組數(shù)學和計算工具,可讓您找到該系統(tǒng)的特定解,該解對應于某些其他線性函數(shù)的最大值或最小值
    2022-10-10
  • 詳解pandas使用drop_duplicates去除DataFrame重復項參數(shù)

    詳解pandas使用drop_duplicates去除DataFrame重復項參數(shù)

    這篇文章主要介紹了詳解pandas使用drop_duplicates去除DataFrame重復項參數(shù),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-08-08
  • pyinstaller打包exe程序的步驟和添加依賴文件的實現(xiàn)

    pyinstaller打包exe程序的步驟和添加依賴文件的實現(xiàn)

    這篇文章主要介紹了pyinstaller打包exe程序的步驟和添加依賴文件的實現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • Python實現(xiàn)npy/mat文件的保存與讀取

    Python實現(xiàn)npy/mat文件的保存與讀取

    除了常用的csv文件和excel文件之外,我們還可以通過Python把數(shù)據(jù)保存文npy文件格式和mat文件格式。本文為大家展示了實現(xiàn)npy文件與mat文件的保存與讀取的示例代碼,需要的可以參考一下
    2022-04-04
  • python 常用日期處理-- datetime 模塊的使用

    python 常用日期處理-- datetime 模塊的使用

    這篇文章主要介紹了python 如何對日期進行處理,幫助大家更好的理解和學習python,感興趣的朋友可以了解下
    2020-09-09
  • 詳解用Python為直方圖繪制擬合曲線的兩種方法

    詳解用Python為直方圖繪制擬合曲線的兩種方法

    這篇文章主要介紹了詳解用Python為直方圖繪制擬合曲線的兩種方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-08-08
  • python中的參數(shù)類型匹配提醒

    python中的參數(shù)類型匹配提醒

    這篇文章主要介紹了python中的參數(shù)類型匹配提醒,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • python利用xlsxwriter模塊 操作 Excel

    python利用xlsxwriter模塊 操作 Excel

    這篇文章主要介紹了python利用xlsxwriter模塊 操作 Excel,幫助大家更好的利用python處理表格,提高辦公效率,感興趣的朋友可以了解下
    2020-10-10

最新評論

北流市| 漠河县| 黎平县| 独山县| 鄢陵县| 澄城县| 寿光市| 二手房| 大石桥市| 阿勒泰市| 德安县| 二手房| 胶南市| 双峰县| 高邮市| 玉溪市| 浦北县| 措勤县| 柳林县| 大足县| 汝城县| 四子王旗| 西安市| 丰宁| 江源县| 苏尼特右旗| 金门县| 天门市| 祥云县| 泸溪县| 襄垣县| 安多县| 寿阳县| 上饶市| 临西县| 纳雍县| 金寨县| 伽师县| 鸡东县| 远安县| 山丹县|