前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python知识点100篇系列(16)-python中如何获取线程的返回值

python知识点100篇系列(16)-python中如何获取线程的返回值

原创
作者头像
JQ实验室
发布2024-10-01 08:15:29
1140
发布2024-10-01 08:15:29
举报
文章被收录于专栏:实用技术

第一种方法最常用:自定义线程类,继承Thread类

新建自定义线程类继承线程类中的run方法和join方法; 重写join方法,在调用join方法时返回结果;

伪代码如下:

代码语言:python
代码运行次数:0
复制
from threading import Thread

def foo(someting):
    return f'{someting} is result'

class returnValueThread(Thread):

    def __init__(self,someargs):
        ''''''
        Thread.__init__(self)
        self.someargs = someargs

    def run(self):
        ''''''
        self.result = foo(someting=self.someargs)

    def join(self):
        super().join()
        return self.result

mythread = returnValueThread('test')
mythread.start()
result = mythread.join()
print(result)

第二种方法可以使用python中内置的concurrent.futures库:

Python 的标准库 concurrent.futures 直接获取线程的返回值;代码量更少,推荐使用此方法;

伪代码如下:

代码语言:python
代码运行次数:0
复制
def futuresReturnValue():
    ''''''
    import concurrent.futures
    with concurrent.futures.ThreadPoolExecutor(max_workers=5) as executor:
        threads = []
        for i in range(10):  # 多个任务
            future = executor.submit(foo, f"agrs_{i}")
            threads.append(future)

        for future in concurrent.futures.as_completed(threads):  # 并发执行
            print(future.result())

futuresReturnValue()

运行结果如下:

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档