• 技术文章 >常见问题 >Python常见问题

    如何使用Python获取多线程返回值?

    宋雪维宋雪维2020-11-24 09:30:01原创6686

    图片2.png

    这段时间,小编在工作上使用最多的就是多线程,而在这个过程中,难免会需要获取多线程操作完的返回值进行其他操作。经过一番查阅和操作,小编发现可以通过在threading、Thread的基础上进行封装来获取返回值,小编总结了这两种方法,快来看看吧。

    第一种:在threading中使用全球变量

    在threading中,并没有实现返回值的方法,所以我们可以利用全局变量来实现返回值的获取。

    from threading import Thread
    
    _sum = 0
    
    
    def cal_sum(begin, end):
        # 声明使用全局变量
        global _sum
        for i in range(begin, end + 1):
            _sum += i
    
    
    if __name__ == '__main__':
        t1 = Thread(target=cal_sum, args=(1, 5))
        t2 = Thread(target=cal_sum, args=(6, 10))
        t1.start()
        t2.start()
    
        print(_sum)

    第二种:重写Thread类,自定义一个get_result()

    from threading import Thread
    
    
    # _sum = 0
    
    
    def cal_sum(begin, end):
        # global _sum
        _sum = 0
        for i in range(begin, end + 1):
            _sum += i
        return  _sum
    
    """重新定义带返回值的线程类"""
    
    
    class MyThread(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
            except Exception:
                return None
    
    
    if __name__ == '__main__':
        t1 = MyThread(cal_sum, args=(1, 5))
        t2 = MyThread(cal_sum, args=(6, 10))
        t1.start()
        t2.start()
        t1.join()
        t2.join()
        res1 = t1.get_result()
        res2 = t2.get_result()
    
        print(res1 + res2)

    以上就是小编总结的获取多线程返回值的方法,大家可以两种方法都尝试下,然后选择自己合适方便的方法去操作哦~更多Python学习推荐:https://www.py.cn/

    专题推荐:python基础
    上一篇:python中if嵌套的练习题有哪些? 下一篇:python随机数组如何生成?

    相关文章推荐

    • 如何使用python多线程并返回值?• python多线程中的threading使用技巧• python多线程中锁怎么使用?• python多线程中的死锁和递归锁用法• python多线程中消息队列如何实现?

    全部评论我要评论

    © 2021 Python学习网 苏ICP备2021003149号-1

  • 取消发布评论
  • 

    Python学习网