Python中的多線程threading模塊

Python有專(zhuān)門(mén)的線程模型.在Python中我們主要是通過(guò)thread和 threading這兩個(gè)模塊來(lái)實(shí)現(xiàn)的放可,其中Python的threading模塊是對(duì)thread做了一些包裝的鲫骗,可以更加方便的被使用莽囤,所以我們使用 threading模塊實(shí)現(xiàn)多線程編程蚯瞧。

實(shí)現(xiàn)模塊:

thread:多線程的底層支持模塊,一般不建議使用泽台;

threading:對(duì)thread進(jìn)行了封裝邓萨,將一些線程的操作對(duì)象化

threading模塊:

Thread 線程類(lèi)蔗蹋,這是我們用的最多的一個(gè)類(lèi),你可以指定線程函數(shù)執(zhí)行或者繼承自它都可以實(shí)現(xiàn)子線程功能蛇券;

Timer與Thread類(lèi)似缀壤,但要等待一段時(shí)間后才開(kāi)始運(yùn)行樊拓;

Lock 鎖原語(yǔ),這個(gè)我們可以對(duì)全局變量互斥時(shí)使用塘慕;

RLock 可重入鎖筋夏,使單線程可以再次獲得已經(jīng)獲得的鎖;

Condition 條件變量图呢,能讓一個(gè)線程停下來(lái)条篷,等待其他線程滿足某個(gè)“條件”;

Event 通用的條件變量蛤织。多個(gè)線程可以等待某個(gè)事件發(fā)生赴叹,在事件發(fā)生后,所有的線程都被激活指蚜;

Semaphore為等待鎖的線程提供一個(gè)類(lèi)似“等候室”的結(jié)構(gòu)乞巧;

BoundedSemaphore 與semaphore類(lèi)似,但不允許超過(guò)初始值摊鸡;

Queue:實(shí)現(xiàn)了多生產(chǎn)者(Producer)摊欠、多消費(fèi)者(Consumer)的隊(duì)列,支持鎖原語(yǔ)柱宦,能夠在多個(gè)線程之間提供很好的同步支持。

其中Thread類(lèi):是主要的線程類(lèi)播瞳,可以創(chuàng)建進(jìn)程實(shí)例掸刊。該類(lèi)提供的函數(shù)包括:

Thread()創(chuàng)建線程

getName(self) 返回線程的名字

isAlive(self) 布爾標(biāo)志,表示這個(gè)線程是否還在運(yùn)行中

isDaemon(self) 返回線程的daemon標(biāo)志

join(self, timeout=None) 程序掛起赢乓,直到線程結(jié)束忧侧,如果給出timeout,則最多阻塞timeout秒

run(self) 定義線程的功能函數(shù)

setDaemon(self, daemonic) 把線程的daemon標(biāo)志設(shè)為daemonic

setName(self, name) 設(shè)置線程的名字

start(self) 開(kāi)始線程執(zhí)行

其中Queue提供的類(lèi):

Queue隊(duì)列

LifoQueue后入先出(LIFO)隊(duì)列

PriorityQueue 優(yōu)先隊(duì)列

多線程threading的簡(jiǎn)單使用:

定義方法(不同的線程需要執(zhí)行)->創(chuàng)建數(shù)組牌芋,用來(lái)放不同的線程 ->創(chuàng)建線程蚓炬,并添加到數(shù)組中->運(yùn)行線程,start()

以下是示例代碼.py

# coding=utf-8

import threading
import time

###  threading 的簡(jiǎn)單使用躺屁。

def method1(n):
    temp=str(time.asctime())
    #print n
    print('這是method1運(yùn)行的時(shí)間:'+temp)

def method2():
    temp = str(time.asctime())
    time.sleep(3)
    print('這是method2運(yùn)行的時(shí)間:' + temp)
    time.sleep(3)
    print('method2延時(shí)3s運(yùn)行結(jié)束')

threads=[]   #創(chuàng)建threads數(shù)組

##創(chuàng)建線程使用threading.Thread()方法肯夏,target=方法名,args=調(diào)用方法的參數(shù)犀暑,沒(méi)有可none驯击,但args要是()

t1=threading.Thread(target=method1,args=('h',))
t2=threading.Thread(target=method2,)

##將單個(gè)線程添加到threads數(shù)組中
threads.append(t1)
threads.append(t2)

## 遍歷threads數(shù)組中的元素,耐亏。start()開(kāi)始執(zhí)行線程

for i in threads:
    '''
    setDaemon()方法是將線程聲明為守護(hù)線程徊都,必須在start()方法之前進(jìn)行設(shè)置,如果不設(shè)置為守護(hù)線程會(huì)被無(wú)限掛起广辰;
    子線程如啟動(dòng)后暇矫,父線程也繼續(xù)執(zhí)行下去主之,當(dāng)父線程執(zhí)行完最后一條語(yǔ)句后,沒(méi)有等待子線程結(jié)束李根。同時(shí)子線程也結(jié)束了槽奕。

    '''
    #i.setDaemon(True)    #ture,父線程結(jié)束和子線程同時(shí)結(jié)束
                         #不設(shè)置朱巨,則主線程all over結(jié)束之后史翘,還會(huì)繼續(xù)執(zhí)行未結(jié)束的子線程。
    i.start()

i.join()    #join()方法在for遍歷循環(huán)之外冀续,必須等待for里的循環(huán)結(jié)束之后琼讽,才能繼續(xù)執(zhí)行主線程,即下面得代碼

print('ALL OVER')

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末洪唐,一起剝皮案震驚了整個(gè)濱河市钻蹬,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌凭需,老刑警劉巖问欠,帶你破解...
    沈念sama閱讀 219,039評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異粒蜈,居然都是意外死亡顺献,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)枯怖,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)注整,“玉大人,你說(shuō)我怎么就攤上這事度硝≈坠欤” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,417評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵蕊程,是天一觀的道長(zhǎng)椒袍。 經(jīng)常有香客問(wèn)我,道長(zhǎng)藻茂,這世上最難降的妖魔是什么驹暑? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,868評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮辨赐,結(jié)果婚禮上岗钩,老公的妹妹穿的比我還像新娘。我一直安慰自己肖油,他們只是感情好兼吓,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,892評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著森枪,像睡著了一般视搏。 火紅的嫁衣襯著肌膚如雪审孽。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,692評(píng)論 1 305
  • 那天浑娜,我揣著相機(jī)與錄音佑力,去河邊找鬼。 笑死筋遭,一個(gè)胖子當(dāng)著我的面吹牛打颤,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播漓滔,決...
    沈念sama閱讀 40,416評(píng)論 3 419
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼编饺,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了响驴?” 一聲冷哼從身側(cè)響起透且,我...
    開(kāi)封第一講書(shū)人閱讀 39,326評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎豁鲤,沒(méi)想到半個(gè)月后秽誊,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,782評(píng)論 1 316
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡琳骡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,957評(píng)論 3 337
  • 正文 我和宋清朗相戀三年锅论,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片楣号。...
    茶點(diǎn)故事閱讀 40,102評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡棍厌,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出竖席,到底是詐尸還是另有隱情,我是刑警寧澤敬肚,帶...
    沈念sama閱讀 35,790評(píng)論 5 346
  • 正文 年R本政府宣布毕荐,位于F島的核電站,受9級(jí)特大地震影響艳馒,放射性物質(zhì)發(fā)生泄漏憎亚。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,442評(píng)論 3 331
  • 文/蒙蒙 一弄慰、第九天 我趴在偏房一處隱蔽的房頂上張望第美。 院中可真熱鬧,春花似錦陆爽、人聲如沸什往。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,996評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)别威。三九已至躯舔,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間省古,已是汗流浹背粥庄。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,113評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留豺妓,地道東北人惜互。 一個(gè)月前我還...
    沈念sama閱讀 48,332評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像琳拭,于是被迫代替她去往敵國(guó)和親训堆。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,044評(píng)論 2 355