重写Thread类

让线程启动的函数,可以有返回值

Thread类本身是不能返回值的,举例:

# 先导入线程模块
from threading import Thread

# 一个简单的函数
def test(num):
    flag = 666
    flag += num
    return flag

# 设置三个线程
t1 = Thread(name='l0', target=test, args=(1000,))
t2 = Thread(name='l1', target=test, args=(2000,))

# 开始线程
res1 = t1.start()
res2 = t2.start()

print(res1, res2)
# 打印出来的结果是None,就是没有返回数据。

但是如果想使用这个线程中函数的返回值做后续操作,那就需要重写一下Thread类,代码如下

# 导入Thread模块
from threading import Thread

# 一个简单的函数
def test(num):
    flag = 666
    flag += num
    return flag

# 重写 类起名为MyThread,继承Thread
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

t1 = MyThread(func=test, args=(1000,))
t2 = MyThread(func=test, args=(2000,))

t1.start()
t1.join()
res1 = t1.get_result() # 调用t1实例(t1是MyThread创建的实例)的get_result()方法

t2.start()
t2.join()
res2 = t2.get_result() 

print(res1, res2)
# 这回就能打印出来了。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值