[Python系列]Python多線(xiàn)程

背景:說(shuō)到多線(xiàn)程锁施,我們會(huì)想到的是:異步編程墩剖、同步(鎖)挑胸、共享變量痒筒、線(xiàn)程池等等,那么Python里面多線(xiàn)程是如何實(shí)現(xiàn)的茬贵?

1.新建一個(gè)線(xiàn)程

import threading

// target是線(xiàn)程需要執(zhí)行的方法簿透,args是線(xiàn)程方法需要傳入的參數(shù)
t1 = threading.Thread(target=processservice.biz_monitor_process, args=(src.globals.xspace_im_monitored_process, 5))  
t1.setDaemon(true) //設(shè)置線(xiàn)程為守護(hù)線(xiàn)程
t1.start()

im_page = xspaceimpageservice.XSpaceImPageService()

// 無(wú)需傳參
t3 = threading.Thread(target=im_page.biz_servicer_chat)
t3.start()
t3.join()

2.線(xiàn)程同步(鎖)

  • 線(xiàn)程同步常見(jiàn)的一種實(shí)現(xiàn)方式是在競(jìng)爭(zhēng)資源上添加鎖,保證同一時(shí)間最多只有一個(gè)線(xiàn)程在訪問(wèn)競(jìng)爭(zhēng)資源
  • Python的threading 模塊提供的線(xiàn)程同步對(duì)象包括:Lock闷沥、RLock萎战、Condition、Event舆逃、Semaphore等蚂维。

以Lock為例:

  • 創(chuàng)建鎖對(duì)象
mutex = thread.allocate_lock()
mutex = threading.Lock()
  • 加鎖
    這里timeout的作用是加鎖的超時(shí)時(shí)間戳粒,如果超過(guò)超時(shí)時(shí)間,可以通過(guò)返回值判斷加鎖是否成功
mutex.acquire([timeout])
  • 釋放鎖
mutex.release()
  • 范例代碼:
// 創(chuàng)建一個(gè)lock實(shí)例
mutex = threading.Lock()
// 加鎖
if mutex.acquire(1):  
            // 線(xiàn)程互斥執(zhí)行的代碼
            num = num+1
            msg = self.name+' set num to '+str(num)
            print msg
            // 釋放鎖
            mutex.release()

3.線(xiàn)程池
如果需要使用線(xiàn)程池的話(huà)虫啥,需要首先安裝threadpool包

pip install threadpool 

范例code

// 實(shí)例一個(gè)線(xiàn)程數(shù)為poolsize的線(xiàn)程池
pool = threadpool.ThreadPool(poolsize)  

// makeRequests傳入需要線(xiàn)程執(zhí)行的方法蔚约,以及參數(shù),最后的callback非必選涂籽,默認(rèn)為空苹祟,創(chuàng)建線(xiàn)程任務(wù)
requests = pool.makeRequests(some_callable, list_of_args, callback)  

// 這里用map函數(shù),將線(xiàn)程任務(wù)放到線(xiàn)程池中
map(pool.putRequest,request_list) 

// wait方法是一個(gè)阻塞方法评雌,用于等待線(xiàn)程池中所有線(xiàn)程執(zhí)行完后返回
pool.wait() 
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末树枫,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子景东,更是在濱河造成了極大的恐慌砂轻,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,817評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件斤吐,死亡現(xiàn)場(chǎng)離奇詭異搔涝,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)和措,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,329評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén)庄呈,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人派阱,你說(shuō)我怎么就攤上這事诬留。” “怎么了颁褂?”我有些...
    開(kāi)封第一講書(shū)人閱讀 157,354評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵故响,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我颁独,道長(zhǎng)彩届,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,498評(píng)論 1 284
  • 正文 為了忘掉前任誓酒,我火速辦了婚禮樟蠕,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘靠柑。我一直安慰自己寨辩,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,600評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布歼冰。 她就那樣靜靜地躺著靡狞,像睡著了一般。 火紅的嫁衣襯著肌膚如雪隔嫡。 梳的紋絲不亂的頭發(fā)上甸怕,一...
    開(kāi)封第一講書(shū)人閱讀 49,829評(píng)論 1 290
  • 那天甘穿,我揣著相機(jī)與錄音,去河邊找鬼梢杭。 笑死温兼,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的武契。 我是一名探鬼主播募判,決...
    沈念sama閱讀 38,979評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼咒唆!你這毒婦竟也來(lái)了届垫?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,722評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤钧排,失蹤者是張志新(化名)和其女友劉穎敦腔,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體恨溜,經(jīng)...
    沈念sama閱讀 44,189評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,519評(píng)論 2 327
  • 正文 我和宋清朗相戀三年找前,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了糟袁。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,654評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡躺盛,死狀恐怖项戴,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情槽惫,我是刑警寧澤周叮,帶...
    沈念sama閱讀 34,329評(píng)論 4 330
  • 正文 年R本政府宣布,位于F島的核電站界斜,受9級(jí)特大地震影響仿耽,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜各薇,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,940評(píng)論 3 313
  • 文/蒙蒙 一项贺、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧峭判,春花似錦开缎、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,762評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至疗认,卻和暖如春完残,著一層夾襖步出監(jiān)牢的瞬間伏钠,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,993評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工坏怪, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留贝润,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,382評(píng)論 2 360
  • 正文 我出身青樓铝宵,卻偏偏與公主長(zhǎng)得像打掘,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子鹏秋,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,543評(píng)論 2 349

推薦閱讀更多精彩內(nèi)容

  • 1.進(jìn)程和線(xiàn)程 隊(duì)列:1尊蚁、進(jìn)程之間的通信: q = multiprocessing.Queue()2、...
    一只寫(xiě)程序的猿閱讀 1,103評(píng)論 0 17
  • 線(xiàn)程 1.同步概念 1.多線(xiàn)程開(kāi)發(fā)可能遇到的問(wèn)題 同步不是一起的意思侣夷,是協(xié)同步調(diào) 假設(shè)兩個(gè)線(xiàn)程t1和t2都要對(duì)nu...
    TENG書(shū)閱讀 606評(píng)論 0 1
  • 線(xiàn)程狀態(tài)新建横朋,就緒,運(yùn)行百拓,阻塞琴锭,死亡。 線(xiàn)程同步多線(xiàn)程可以同時(shí)運(yùn)行多個(gè)任務(wù)衙传,線(xiàn)程需要共享數(shù)據(jù)的時(shí)候决帖,可能出現(xiàn)數(shù)據(jù)不...
    KevinCool閱讀 795評(píng)論 0 0
  • 美國(guó)著名社會(huì)科學(xué)家和未來(lái)學(xué)家貝爾在書(shū)中指出后工業(yè)社會(huì)五個(gè)重要特征1服務(wù)型經(jīng)濟(jì)代替產(chǎn)品生產(chǎn)經(jīng)濟(jì) 2專(zhuān)業(yè)技術(shù)人員成為產(chǎn)...
    小周的學(xué)習(xí)筆記閱讀 1,775評(píng)論 0 0
  • 1.CoreAnimation 核心動(dòng)畫(huà) http://blog.csdn.net/u013282174/arti...
    苦可樂(lè)閱讀 374評(píng)論 0 0