python继承threading.Thread实现有返回值的子类实例


Posted in Python onMay 02, 2020

继承与threading.Thread实现有返回值的子类MyThread,废话不多说,大家直接看代码

import threading
class MyThread(threading.Thread):
  def __init__(self,func,args=()):
    super(MyThread,self).__init__()
    self.func = func
    self.args = args
  def run(self):
    self.res = self.func(*self.args)
  def getResult(self):
    try:
      return self.res 
    except Exception:
      return None

补充知识:python3多线程自定义threading子类

解决问题

1、python3多线程自定义threading.Thread的子类;

2、多线程并行,获取多线程运行结果

代码实例

import threading
from time import sleep
exitFlag = True
def pp1(*args):
  i = 1
  while(exitFlag):
    print('\r'+' '*20,end='')
    print('\r线程1运行中'+'.'*(i%7),end='')
    sleep(0.5)
    i = (i>=6 and 1 or i+1)  #if i>=6则i=1,否则i=i+1
  print('线程1结束')

def pp2(x,y):
  sleep(3)
  print('\n线程2结束')
  return x + y

class MyThread(threading.Thread):  #MyThread类继承threading.Thread类
  def __init__(self,func,args1=None,args2=None):
    threading.Thread.__init__(self)
    self.func = func
    self.args1 = args1
    self.args2 = args2
  def run(self):     #t.start()语句调用run方法
    self.result = self.func(self.args1,self.args2)  
  def getResult(self):  #getResult方法可获得func函数return的结果
    threading.Thread.join(self)
    return self.result

t1 = MyThread(pp1)   #初始化t1
t2 = MyThread(pp2,2,3) #初始化t1
t1.start()  #启动线程t1
t2.start()  #启动线程t2
t2.join()   #判断线程t2运行结束
exitFlag = False  #线程2运行结束后,线程1才能结束
t1.join()  #判断线程t1运行结束,线程t1结束后,主线程才能往下运行
print('线程2返回结果: ',t2.getResult())
print('主线程结束')

以上这篇python继承threading.Thread实现有返回值的子类实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python微信跳一跳系列之棋子定位像素遍历
Feb 26 Python
Python实现接受任意个数参数的函数方法
Apr 21 Python
符合语言习惯的 Python 优雅编程技巧【推荐】
Sep 25 Python
python3实现逐字输出的方法
Jan 23 Python
python导入坐标点的具体操作
May 10 Python
记录Python脚本的运行日志的方法
Jun 05 Python
使用Filter过滤python中的日志输出的实现方法
Jul 17 Python
给我一面国旗 python帮你实现
Sep 30 Python
python中sys模块是做什么用的
Aug 16 Python
Python 多线程C段扫描、检测 Ping扫描脚本的实现
Sep 03 Python
安装python依赖包psycopg2来调用postgresql的操作
Jan 01 Python
python实现图片转字符画的完整代码
Feb 21 Python
Python3-异步进程回调函数(callback())介绍
May 02 #Python
浅谈Python中threading join和setDaemon用法及区别说明
May 02 #Python
判断Threading.start新线程是否执行完毕的实例
May 02 #Python
python中threading开启关闭线程操作
May 02 #Python
浅谈python3打包与拆包在函数的应用详解
May 02 #Python
构建高效的python requests长连接池详解
May 02 #Python
如何基于windows实现python定时爬虫
May 01 #Python
You might like
PHP中mysqli_affected_rows作用行数返回值分析
2014/12/26 PHP
PHP的Laravel框架结合MySQL与Redis数据库的使用部署
2016/03/21 PHP
简单PHP会话(session)说明介绍
2016/08/21 PHP
使用PHP+MySql实现微信投票功能实例代码
2017/09/29 PHP
Laravel Eloquent分表方法并使用模型关联的实现
2019/11/25 PHP
键盘 keycode的值 javascript时触发事件时很有用的要素
2009/11/02 Javascript
动态加载图片路径 保持JavaScript控件的相对独立性
2010/09/03 Javascript
jquery中获取select选中值的代码
2011/06/27 Javascript
jQuery UI设置固定日期选择特效代码分享
2015/08/27 Javascript
理解 JavaScript Scoping & Hoisting(二)
2015/11/18 Javascript
jquery拖拽排序简单实现方法(效果增强版)
2016/02/16 Javascript
AngularJS基础 ng-srcset 指令简单示例
2016/08/03 Javascript
AngularJS 实现弹性盒子布局的方法
2016/08/30 Javascript
浅析$(function) ready和onload 的区别
2016/09/03 Javascript
Angular的自定义指令以及实例
2016/12/26 Javascript
微信小程序本作用域下调用全局JS详解及实例
2017/02/22 Javascript
浅谈jQuery框架Ajax常用选项
2017/07/08 jQuery
vue.js模仿京东省市区三级联动的选择组件实例代码
2017/11/22 Javascript
解决vue打包之后静态资源图片失效的问题
2018/02/21 Javascript
从0到1搭建element后台框架优化篇(打包优化)
2019/05/12 Javascript
vscode+gulp轻松开发小程序的完整步骤
2020/10/18 Javascript
jQuery实现动态操作table行
2020/11/23 jQuery
[55:11]完美世界DOTA2联赛PWL S2 SZ vs LBZS 第一场 11.26
2020/11/30 DOTA
vc6编写python扩展的方法分享
2014/01/17 Python
Python的Flask框架中SQLAlchemy使用时的乱码问题解决
2015/11/07 Python
python 对象和json互相转换方法
2018/03/22 Python
Window10+Python3.5安装opencv的教程推荐
2018/04/02 Python
python更改已存在excel文件的方法
2018/05/03 Python
Pyqt5 基本界面组件之inputDialog的使用
2019/06/25 Python
Python pandas.DataFrame 找出有空值的行
2019/09/09 Python
Python关于反射的实例代码分享
2020/02/20 Python
信息专业个人的自我评价
2013/12/27 职场文书
就业协议书
2014/09/12 职场文书
落实八项规定专题民主生活会对照检查材料
2014/09/15 职场文书
工作简报格式范文
2015/07/21 职场文书
使用feign服务调用添加Header参数
2021/06/23 Java/Android