python 获取多线程的返回值

转载自网络 http://www.javashuo.com/article/p-hnfvzcga-bu.html 并发爬虫时用到html

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) 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,否则主线程比子线程跑的快,会拿不到结果
    print t.get_result() et = time.time() print et - st
执行结果: (0, 2, 4) (2, 4, 6) (4, 6, 8) (6, 8, 10) 1.00099992752
相关文章
相关标签/搜索