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
posted @ 2019-04-15 16:09  python许三多  阅读(4116)  评论(0编辑  收藏  举报