python threading获取线程函数返回值
2013-08-16 16:29
337 查看
最近需要用python写一个环境搭建工具,多线程并行对环境各个部分执行一些操作,并最终知道这些并行执行的操作是否都执行成功了,也就是判断这些操作函数的返回值是否为0。但是threading并没有显式的提供获取各个线程函数返回值的方法,只好自己动手,下面就介绍一下自己的实现方式。
一开始考虑到执行的操作可能有很多,而且后续会不断补充,因此先写了一个通用的多线程执行类,封装线程操作的基本方法,如下:
?
MyThread类会接受一个func_list参数,每个元素是一个dict,有func和args两个key,func是真正要执行的函数引用,args是函数的参数。其中最主要的方法是start方法,会多线程执行每个func,然后一直等到所有线程都执行结束后退出。接下来的关键就是如何对self.ret_flag设置正确的值,以判断所有的线程函数是否都返回0了。
我的实现是,在MyThread class中写一个方法trace_func,作为直接的线程函数,这个trace_func中执行真正需要执行的函数,从而可以获取到该函数的返回值,设置给self.ret_flag。
这个trace_func的第一参数是要执行的func引用,后面是这个func的参数,具体代码如下:
?
这样就需要修改start方法中Thread函数的设置,代码如下:
?
这样能够成功获得返回值了,实验:
?
最后的输出结果
func1 ret:1
func2 ret:2
func3 ret:100
all thread ret : 103
一开始考虑到执行的操作可能有很多,而且后续会不断补充,因此先写了一个通用的多线程执行类,封装线程操作的基本方法,如下:
?
我的实现是,在MyThread class中写一个方法trace_func,作为直接的线程函数,这个trace_func中执行真正需要执行的函数,从而可以获取到该函数的返回值,设置给self.ret_flag。
这个trace_func的第一参数是要执行的func引用,后面是这个func的参数,具体代码如下:
?
?
?
func1 ret:1
func2 ret:2
func3 ret:100
all thread ret : 103
相关文章推荐
- python使用threading获取线程函数返回值的实现方法
- python threading获取线程函数返回值
- 线程的锁函数:threading.Lock() 返回锁对象 Lock
- python获取多线程及子线程的返回值
- Python自定义函数基础:获取函数单返回值和多返回值
- python_9(获取字典值、函数参数、函数返回值、lambda的函数用法)
- Python从线程获取函数返回值
- python学习笔记7-函数返回值
- python学习笔记,返回函数,匿名函数,装饰器
- Python基础-高级-返回函数
- Python实现一元二次方程的定义是:ax2 + bx + c = 0 请编写一个函数,返回一元二次方程的解。
- Python获取Windows或Linux主机名称通用函数分享
- Python 返回函数_闭包_装饰器
- python 获取当前调用函数名等log信息
- python 标准库 —— 线程与同步(threading、multiprocessing)
- python函数返回多个值的示例方法
- python函数的返回值
- Python中threading模块join函数用法实例分析
- C++11获取线程的返回值
- Python3基础 Python的函数都有返回值 无指定返回值的函数 返回NONE对象