Python多線程獲取返回值


在使用多線程的時候難免想要獲取其操作完的返回值進行其他操作,下面的方法以作參考:

一,首先重寫threading類,使其滿足調用特定的方法獲取其返回值 

import threading
class MyThread(threading.Thread):
"""重寫多線程,使其能夠返回值"""
def __init__(self, target=None, args=()):
super(MyThread, self).__init__()
self.func = target
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

二,調用get_result()方法,最終列表retval就是多線程返回值的集合:

def parse_detail_page(self,items_list):
retval
, RetList, _Threads = [], [], []
for url in items_list:
t = MyThread(
target=self.threadItem, args=(url,))
t.start()
_Threads.append(t)
for t in _Threads:
t.join()
retval.append(t.get_result())
def threadItem(self,url):
"""多線程請求"""
response = requests.get(url)
return response.text


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM