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

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

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

    图片2.png

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

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

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

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    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()

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    27

    28

    29

    30

    31

    32

    33

    34

    35

    36

    37

    38

    39

    40

    41

    42

    43

    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学习网