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

python獲取多線程及子線程的返回值

 更新時(shí)間:2017年11月15日 17:24:22   投稿:mrr  
這篇文章主要介紹了python獲取多線程及子線程的返回值的相關(guān)資料,需要的朋友可以參考下

最近有個(gè)需求,用多線程比較合適,但是我需要每個(gè)線程的返回值,這就需要我在threading.Thread的基礎(chǔ)上進(jìn)行封裝

import threading
class MyThread(threading.Thread):
 def __init__(self,func,args=()):
  super(MyThread,self).__init__()
  self.func = func
  self.args = args
 def run(self):
  self.result = self.func(*self.args)
 def get_result(self):
  try:
   return self.result # 如果子線程不使用join方法,此處可能會(huì)報(bào)沒有self.result的錯(cuò)誤
  except Exception:
   return None
def foo(a,b,c):
 time.sleep(1)
 print a*2,b*2,c*2,
 return a*2,b*2,c*2
st = time.time()
li = []
for i in xrange(4):
 t = MyThread(foo,args=(i,i+1,i+2))
 li.append(t)
 t.start()
for t in li:
 t.join() # 一定要join,不然主線程比子線程跑的快,會(huì)拿不到結(jié)果
 print t.get_result()
et = time.time()
print et - st

執(zhí)行結(jié)果

0 2 4 (0, 2, 4)
4 6 8 2 4 6 (2, 4, 6)
(4, 6, 8)
6 8 10 (6, 8, 10)
1.00200009346

元組中的結(jié)果是函數(shù)foo的返回值,至于結(jié)果為什么這么亂,我猜,是因?yàn)楦髯泳€程foo的print和主線程print get_result()一起搶占系統(tǒng)資源造成。

下面介紹下python獲得子線程的返回值,具體代碼如下所示:

import sys 
import threading 
import Queue 
q = Queue.Queue() 
def worker1(x, y): 
 func_name = sys._getframe().f_code.co_name 
 print "%s run ..." % func_name 
 q.put((x + y, func_name)) 
def worker2(x, y): 
 func_name = sys._getframe().f_code.co_name 
 print "%s run ...." % func_name 
 q.put((x - y, func_name)) 
if __name__ == '__main__': 
 result = list() 
 t1 = threading.Thread(target=worker1, name='thread1', args=(10, 5, )) 
 t2 = threading.Thread(target=worker2, name='thread2', args=(20, 1, )) 
 print '-' * 50 
 t1.start() 
 t2.start() 
 t1.join() 
 t2.join() 
 while not q.empty(): 
  result.append(q.get()) 
 for item in result: 
  if item[1] == worker1.__name__: 
   print "%s 's return value is : %s" % (item[1], item[0]) 
  elif item[1] == worker2.__name__: 
   print "%s 's return value is : %s" % (item[1], item[0]) 

這是目前最主流的獲取線程數(shù)據(jù)的方法。使用 Queue 庫創(chuàng)建隊(duì)列實(shí)例,用來儲(chǔ)存和傳遞線程間的數(shù)據(jù)。Python 的隊(duì)列是線程安全的,也就是說多個(gè)線程同時(shí)訪問一個(gè)隊(duì)列也不會(huì)有沖突。Python 隊(duì)列有三種 FIFO 先進(jìn)先出,F(xiàn)ILO 先進(jìn)后出(類似棧),優(yōu)先級(jí)隊(duì)列(由單獨(dú)的優(yōu)先級(jí)參數(shù)決定順序)。使用隊(duì)列可以實(shí)現(xiàn)簡(jiǎn)單 生產(chǎn)者 – 消費(fèi)者 模型

總結(jié)

以上所述是小編給大家介紹的python獲取多線程及子線程的返回值,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!

相關(guān)文章

  • Python中index()函數(shù)與find()函數(shù)的區(qū)別詳解

    Python中index()函數(shù)與find()函數(shù)的區(qū)別詳解

    這篇文章主要介紹了Python中index()函數(shù)與find()函數(shù)的區(qū)別詳解,Python index()方法檢測(cè)字符串中是否包含子字符串 str ,如果指定beg開始和end結(jié)束范圍,則檢查是否包含在指定范圍內(nèi),需要的朋友可以參考下
    2023-08-08
  • Python列表轉(zhuǎn)換為Excel表格第一列的方法詳解

    Python列表轉(zhuǎn)換為Excel表格第一列的方法詳解

    在數(shù)據(jù)處理和分析的過程中,我們經(jīng)常需要將Python中的數(shù)據(jù)結(jié)構(gòu)(如列表)導(dǎo)出到Excel表格中,本文為大家整理了Python列表轉(zhuǎn)換為Excel表格第一列的幾種方法,希望對(duì)大家有所幫助
    2024-11-11
  • Tensorflow輕松實(shí)現(xiàn)XOR運(yùn)算的方式

    Tensorflow輕松實(shí)現(xiàn)XOR運(yùn)算的方式

    今天小編就為大家分享一篇Tensorflow輕松實(shí)現(xiàn)XOR運(yùn)算的方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02
  • Python數(shù)據(jù)處理pandas讀寫操作IO工具CSV解析

    Python數(shù)據(jù)處理pandas讀寫操作IO工具CSV解析

    這篇文章主要為大家介紹了Python?pandas數(shù)據(jù)讀寫操作IO工具之CSV使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • 如何通過python實(shí)現(xiàn)全排列

    如何通過python實(shí)現(xiàn)全排列

    這篇文章主要介紹了如何通過python實(shí)現(xiàn)全排列,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-02-02
  • 解決Keras中Embedding層masking與Concatenate層不可調(diào)和的問題

    解決Keras中Embedding層masking與Concatenate層不可調(diào)和的問題

    這篇文章主要介紹了解決Keras中Embedding層masking與Concatenate層不可調(diào)和的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06
  • Pytorch .pth權(quán)重文件的使用解析

    Pytorch .pth權(quán)重文件的使用解析

    今天小編就為大家分享一篇Pytorch .pth權(quán)重文件的使用解析,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02
  • 定位python內(nèi)存泄漏問題及解決

    定位python內(nèi)存泄漏問題及解決

    這篇文章主要介紹了定位python內(nèi)存泄漏問題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • 詳解Python如何實(shí)現(xiàn)尾遞歸優(yōu)化

    詳解Python如何實(shí)現(xiàn)尾遞歸優(yōu)化

    尾遞歸是函數(shù)返回最后一個(gè)操作是遞歸調(diào)用,則該函數(shù)是尾遞歸。本文將介紹Python是如何實(shí)現(xiàn)尾遞歸優(yōu)化的,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2022-05-05
  • Python中查看變量的類型內(nèi)存地址所占字節(jié)的大小

    Python中查看變量的類型內(nèi)存地址所占字節(jié)的大小

    這篇文章主要介紹了Python中查看變量的類型,內(nèi)存地址,所占字節(jié)的大小,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-06-06

最新評(píng)論

湾仔区| 收藏| 延安市| 济阳县| 丹江口市| 潞西市| 沂水县| 岑溪市| 涿鹿县| 奎屯市| 中阳县| 尤溪县| 股票| 安陆市| 东丰县| 鹤山市| 韶关市| 宜州市| 嘉义市| 南涧| 盱眙县| 鱼台县| 炉霍县| 罗定市| 湖口县| 广元市| 晴隆县| 南充市| 静安区| 西藏| 镇平县| 泗阳县| 环江| 广南县| 弥渡县| 友谊县| 泾源县| 长丰县| 喀什市| 葵青区| 北川|