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

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

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

最近有個需求,用多線程比較合適,但是我需要每個線程的返回值,這就需要我在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方法,此處可能會報沒有self.result的錯誤
  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,不然主線程比子線程跑的快,會拿不到結(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é)果為什么這么亂,我猜,是因為各子線程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)建隊列實例,用來儲存和傳遞線程間的數(shù)據(jù)。Python 的隊列是線程安全的,也就是說多個線程同時訪問一個隊列也不會有沖突。Python 隊列有三種 FIFO 先進(jìn)先出,F(xiàn)ILO 先進(jìn)后出(類似棧),優(yōu)先級隊列(由單獨的優(yōu)先級參數(shù)決定順序)。使用隊列可以實現(xiàn)簡單 生產(chǎn)者 – 消費者 模型

總結(jié)

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

相關(guān)文章

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

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

    這篇文章主要介紹了Python中index()函數(shù)與find()函數(shù)的區(qū)別詳解,Python index()方法檢測字符串中是否包含子字符串 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表格第一列的幾種方法,希望對大家有所幫助
    2024-11-11
  • Tensorflow輕松實現(xiàn)XOR運算的方式

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

    今天小編就為大家分享一篇Tensorflow輕松實現(xiàn)XOR運算的方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    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實現(xiàn)全排列

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

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

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

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

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

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

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

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

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

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

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

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

最新評論

汉沽区| 阿克苏市| 北宁市| 思南县| 寿宁县| 厦门市| 济南市| 同心县| 昭觉县| 玉环县| 平罗县| 敖汉旗| 九寨沟县| 邵东县| 高邮市| 望谟县| 龙山县| 通州市| 新和县| 丰镇市| 若羌县| 江川县| 海伦市| 松溪县| 法库县| 当阳市| 余姚市| 桦南县| 洛隆县| 方山县| 射阳县| 壤塘县| 平山县| 赞皇县| 凌源市| 隆尧县| 阿荣旗| 河北省| 万盛区| 彭山县| 嘉定区|