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中time模块和datetime模块的用法示例
Feb 28 Python
Python黑魔法Descriptor描述符的实例解析
Jun 02 Python
Python爬虫实例_城市公交网络站点数据的爬取方法
Jan 10 Python
python 实现在Excel末尾增加新行
May 02 Python
Python实现多属性排序的方法
Dec 05 Python
python实现三次样条插值
Dec 17 Python
python实现kmp算法的实例代码
Apr 03 Python
TensorFlow车牌识别完整版代码(含车牌数据集)
Aug 05 Python
Centos7 下安装最新的python3.8
Oct 28 Python
numpy.array 操作使用简单总结
Nov 08 Python
python3 hdf5文件 遍历代码
May 19 Python
python实现简单石头剪刀布游戏
Oct 24 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
业余方法DIY电子管FM收音机
2021/03/02 无线电
Session的工作机制详解和安全性问题(PHP实例讲解)
2014/04/10 PHP
PHP MVC框架skymvc支持多文件上传
2016/05/26 PHP
php使用ftp远程上传文件类(完美解决主从文件同步问题的方法)
2016/09/23 PHP
php 可变函数使用小结
2018/06/12 PHP
javascript 函数式编程
2007/08/16 Javascript
Javascript 中文字符串处理额外注意事项
2009/11/15 Javascript
jQuery EasyUI API 中文文档 - Calendar日历使用
2011/10/19 Javascript
Javascript 数组排序详解
2014/10/22 Javascript
在AngularJS中使用AJAX的方法
2015/06/17 Javascript
Javascript的无new构建实例详解
2016/05/15 Javascript
BootStrap 智能表单实战系列(十)自动完成组件的支持
2016/06/13 Javascript
jQuery异步提交表单的两种方式
2016/09/13 Javascript
JS实现搜索框文字可删除功能
2016/12/28 Javascript
JavaScript解析JSON格式数据的方法示例
2017/01/24 Javascript
浅谈JavaScript中的apply/call/bind和this的使用
2017/02/26 Javascript
jQuery 判断元素整理汇总
2017/02/28 Javascript
jQuery实现数字自动增加或者减少的动画效果示例
2018/12/11 jQuery
详解vue 不同环境配置不同的打包命令
2019/04/07 Javascript
浅谈VUE防抖与节流的最佳解决方案(函数式组件)
2019/05/22 Javascript
深入理解基于vue-cli的webpack打包优化实践及探索
2019/10/14 Javascript
微信小程序对图片进行canvas压缩的方法示例详解
2020/11/12 Javascript
Django中实现点击图片链接强制直接下载的方法
2015/05/14 Python
Python的地形三维可视化Matplotlib和gdal使用实例
2017/12/09 Python
pyspark操作MongoDB的方法步骤
2019/01/04 Python
如何基于python操作json文件获取内容
2019/12/24 Python
协程Python 中实现多任务耗资源最小的方式
2020/10/19 Python
详解Selenium-webdriver绕开反爬虫机制的4种方法
2020/10/28 Python
HTML5 Convas APIs方法详解
2015/04/24 HTML / CSS
服装设计行业个人的自我评价
2013/12/20 职场文书
《临死前的严监生》教学反思
2014/02/13 职场文书
有兼职工作经历的简历自我评价
2014/03/07 职场文书
工厂车间标语
2014/06/19 职场文书
2014幼儿园教师师德师风演讲稿
2014/09/10 职场文书
2014年科室工作总结范文
2014/12/19 职场文书
SQL实现LeetCode(177.第N高薪水)
2021/08/04 MySQL