位置: 編程技術(shù) - 正文
推薦整理分享python使用threading獲取線程函數(shù)返回值的實(shí)現(xiàn)方法(python的threading),希望有所幫助,僅作參考,歡迎閱讀內(nèi)容。
文章相關(guān)熱門搜索詞:python中threading,python中thread,python threading,python thread condition,python thread condition,PYTHON使用縮進(jìn)來體現(xiàn)代碼之間的邏輯關(guān)系,python中的threading.thread,PYTHON使用縮進(jìn)來體現(xiàn)代碼之間的邏輯關(guān)系,內(nèi)容如對(duì)您有幫助,希望把文章鏈接給更多的朋友!
threading用于提供線程相關(guān)的操作,線程是應(yīng)用程序中工作的最小單元。python當(dāng)前版本的多線程庫沒有實(shí)現(xiàn)優(yōu)先級(jí)、線程組,線程也不能被停止、暫停、恢復(fù)、中斷。
threading模塊提供的類:
Thread, Lock, Rlock, Condition, [Bounded]Semaphore, Event, Timer, local。
threading 模塊提供的常用方法:
threading.currentThread(): 返回當(dāng)前的線程變量。
threading.enumerate(): 返回一個(gè)包含正在運(yùn)行的線程的list。正在運(yùn)行指線程啟動(dòng)后、結(jié)束前,不包括啟動(dòng)前和終止后的線程。
threading.activeCount(): 返回正在運(yùn)行的線程數(shù)量,與len(threading.enumerate())有相同的結(jié)果。
threading 模塊提供的常量:
threading.TIMEOUT_MAX 設(shè)置threading全局超時(shí)時(shí)間。
好了,正文開始:
最近需要用python寫一個(gè)環(huán)境搭建工具,多線程并行對(duì)環(huán)境各個(gè)部分執(zhí)行一些操作,并最終知道這些并行執(zhí)行的操作是否都執(zhí)行成功了,也就是判斷這些操作函數(shù)的返回值是否為0。但是threading并沒有顯式的提供獲取各個(gè)線程函數(shù)返回值的方法,只好自己動(dòng)手,下面就介紹一下自己的實(shí)現(xiàn)方式。
一開始考慮到執(zhí)行的操作可能有很多,而且后續(xù)會(huì)不斷補(bǔ)充,因此先寫了一個(gè)通用的多線程執(zhí)行類,封裝線程操作的基本方法,如下:
MyThread類會(huì)接受一個(gè)func_list參數(shù),每個(gè)元素是一個(gè)dict,有func和args兩個(gè)key,func是真正要執(zhí)行的函數(shù)引用,args是函數(shù)的參數(shù)。其中最主要的方法是start方法,會(huì)多線程執(zhí)行每個(gè)func,然后一直等到所有線程都執(zhí)行結(jié)束后退出。接下來的關(guān)鍵就是如何對(duì)self.ret_flag設(shè)置正確的值,以判斷所有的線程函數(shù)是否都返回0了。
我的實(shí)現(xiàn)是,在MyThread class中寫一個(gè)方法trace_func,作為直接的線程函數(shù),這個(gè)trace_func中執(zhí)行真正需要執(zhí)行的函數(shù),從而可以獲取到該函數(shù)的返回值,設(shè)置給self.ret_flag。
這個(gè)trace_func的第一參數(shù)是要執(zhí)行的func引用,后面是這個(gè)func的參數(shù),具體代碼如下:
這樣就需要修改start方法中Thread函數(shù)的設(shè)置,代碼如下:
這樣能夠成功獲得返回值了,實(shí)驗(yàn):
最后的輸出結(jié)果
總結(jié)
以上所述是小編給大家介紹的python使用threading獲取線程函數(shù)返回值的實(shí)現(xiàn)方法,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)積木網(wǎng)網(wǎng)站的支持!
python獲取多線程及子線程的返回值 最近有個(gè)需求,用多線程比較合適,但是我需要每個(gè)線程的返回值,這就需要我在threading.Thread的基礎(chǔ)上進(jìn)行封裝importthreadingclassMyThread(threading.Thread):def__
python下個(gè)簡(jiǎn)單實(shí)例代碼 注意:我用的python2.7,大家如果用Python3.0以上的版本,請(qǐng)記得在print()函數(shù)哦!如果因?yàn)榘姹締栴}評(píng)論的,不做回復(fù)哦?。。?.題目:有1、2、3、4個(gè)數(shù)字
python簡(jiǎn)單實(shí)例訓(xùn)練(~) 注意:我用的python2.7,大家如果用Python3.0以上的版本,請(qǐng)記得在print()函數(shù)哦!如果因?yàn)榘姹締栴}評(píng)論的,不做回復(fù)哦?。?題目:將一個(gè)正整數(shù)分解質(zhì)
標(biāo)簽: python的threading
本文鏈接地址:http://esstyw.cn/biancheng/372261.html 轉(zhuǎn)載請(qǐng)保留說明!上一篇:Python set常用操作函數(shù)集錦(python里的set)
網(wǎng)站地圖: 企業(yè)信息 工商信息 財(cái)稅知識(shí) 網(wǎng)絡(luò)常識(shí) 編程技術(shù)
友情鏈接: 武漢網(wǎng)站建設(shè)