python多线程,获取多线程的返回值

代码如下:

# coding=utf-8

import threading
from time import ctime, sleep

# 多线程如何返回值
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 music(func):
	for i in range(2):
		print ("I was listening to %s. %s" %(func,ctime()))
		sleep(1)

def move(func):
	for i in range(2):
		print ("I was at the %s! %s" %(func,ctime()))
		sleep(5)

def add(a, b):
	#print ('a+b:', a+b)
	return a+b

threads = []
t1 = threading.Thread(target=music, args=(u'爱情买卖',))
threads.append(t1)
t2 = threading.Thread(target=move, args=(u'阿凡达',))
threads.append(t2)

t3 = MyThread(add, args=(1,2,))
threads.append(t3)

if __name__ == '__main__':
	for t in threads[:2]:
		t.setDaemon(True)
		t.start()

	for t in threads[2:]:
		t.setDaemon(True)
		t.start()
	print ("MyThread:a+b=%d ! %s" % (t.get_result(),ctime()))

	print ("all over %s" %ctime())

输出结果:

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏计算机视觉与深度学习基础

Leetcode 213 House Robber II

Note: This is an extension of House Robber. After robbing those houses on that...

2108
来自专栏技术栈大杂烩

Python的Sequence切片下标问题

在python中, 切片是一个经常会使用到的语法, 不管是元组, 列表还是字符串, 一般语法就是:

1252
来自专栏前端新视界

由移动端级联选择器所引发的对于数据结构的思考

GitHub:https://github.com/nzbin/Framework7-CityPicker Demo:https://nzbin.githu...

4098
来自专栏码匠的流水账

聊聊storm的AssignmentDistributionService

本文主要研究一下storm的AssignmentDistributionService

1541
来自专栏菩提树下的杨过

温故而知新:设计模式之原型模式(Prototype)

原型模式个人以为最适合的场景:参照现有的某一个对象实例,快速得到多个完整的实例副本。(通常是深拷贝的副本) 深拷贝在c#中实现的最简单方式莫过于通过反序列化得到...

2425
来自专栏aoho求索

由散列表到BitMap的概念与应用(二)

在前一篇文章中我们介绍了散列表和BitMap的相关概念与部分应用。本文将会具体讲解BitMap的扩展:布隆过滤器(Bloom filter)。

923
来自专栏程序员的SOD蜜

使用泛型委托,构筑最快的通用属性访问器

最近做一个父类的属性向子类的属性赋值的小程序,用了下AutoMapper组件,感觉不错,想探究下它的原理,自己动手做一个例子试试看。实现这个功能,第一反应使用反...

2529
来自专栏智能大石头

C++返回值优化RVO

返回值优化,是一种属于编译器的技术,它通过转换源代码和对象的创建来加快源代码的执行速度。RVO = return value optimization。 测试...

3219
来自专栏FD的专栏

编辑器背后的数据结构

大约刚上大二的时候,想做一个编辑器控件。不是一个用Scintilla套上外壳的编辑器,而是一个能被套上外壳的控件。当然它最后也成为了我众多流产了的练手项目中的一...

1853
来自专栏xingoo, 一个梦想做发明家的程序员

【设计模式】—— 备忘录模式Memento

  模式意图   这个模式主要是想通过一个对象来记录对象的某种状态,这样有利于在其他需要的场合进行恢复。   该模式还有跟多可以扩展的地方,比如可以记录多个时...

2105

扫码关注云+社区

领取腾讯云代金券