• Index

多线程获取子线程任务返回值

Reads: 2083 Edit

import threading
import time

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 add(x, y):
    return x+y


def main():
    t_list = []
    t_data = []

    for i in range(3):
        t = MyThread(add, (i,i))
        t_list.append(t)
        t.start()

    for t in t_list:
        t.join()  # 一定要join,不然主线程比子线程跑的快,会拿不到结果
        t_data.append(t.get_result())
        print(t.get_result())

if __name__ == '__main__':
    main()



Comments

Make a comment

www.ultrapower.com ,王硕的博客,专注于研究互联网产品和技术,提供中文精品教程。 本网站与其它任何公司及/或商标无任何形式关联或合作。
  • Index
aaaaa