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创建和使用字典实例详解
Nov 01 Python
零基础写python爬虫之神器正则表达式
Nov 06 Python
Python的Tornado框架异步编程入门实例
Apr 24 Python
在Python的Django框架中编写编译函数
Jul 20 Python
python itchat实现微信自动回复的示例代码
Aug 14 Python
Python进阶之全面解读高级特性之切片
Feb 19 Python
python协程之动态添加任务的方法
Feb 19 Python
Django web框架使用url path name详解
Apr 29 Python
Python 创建守护进程的示例
Sep 29 Python
基于Python爬取素材网站音频文件
Oct 21 Python
Django中ORM的基本使用教程
Dec 22 Python
python3中celery异步框架简单使用+守护进程方式启动
Jan 20 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 将bmp图片转为jpg等其他任意格式的图片
2009/06/21 PHP
php实现二进制和文本相互转换的方法
2015/04/18 PHP
php连接oracle数据库的核心步骤
2016/05/26 PHP
PHP异常处理定义与使用方法分析
2017/07/25 PHP
ThinkPHP框架实现的邮箱激活功能示例
2018/06/15 PHP
PHP商品秒杀问题解决方案实例详解【mysql与redis】
2019/07/22 PHP
Laravel中如何轻松容易的输出完整的SQL语句
2020/07/26 PHP
js left,right,mid函数
2008/06/10 Javascript
Prototype中dom对象方法汇总
2008/09/17 Javascript
jquery实现的元素的left增加N像素 鼠标移开会慢慢的移动到原来的位置
2010/03/21 Javascript
jQuery+.net实现浏览更多内容(改编php版本)
2013/03/28 Javascript
js鼠标滑轮滚动事件绑定的简单实例(兼容主流浏览器)
2014/01/14 Javascript
jQuery插件开发精品教程(让你的jQuery更上一个台阶)
2015/11/07 Javascript
JavaScript函数学习总结以及相关的编程习惯指南
2015/11/16 Javascript
GitHub上一些实用的JavaScript的文件压缩解压缩库推荐
2016/03/13 Javascript
JQuery fileupload插件实现文件上传功能
2016/03/18 Javascript
实例讲解JavaScript中call、apply、bind方法的异同
2016/09/13 Javascript
jquery插件bootstrapValidator表单验证详解
2016/12/15 Javascript
详解Vue单元测试Karma+Mocha学习笔记
2018/01/31 Javascript
JavaScript中toLocaleString()和toString()的区别实例分析
2018/08/14 Javascript
详解vue为什么要求组件模板只能有一个根元素
2019/07/22 Javascript
[01:07:17]EG vs Optic Supermajor 败者组 BO3 第一场 6.6
2018/06/07 DOTA
Python 列表list使用介绍
2014/11/30 Python
在python中按照特定顺序访问字典的方法详解
2018/12/14 Python
Python如何爬取微信公众号文章和评论(基于 Fiddler 抓包分析)
2019/06/28 Python
python原类、类的创建过程与方法详解
2019/07/19 Python
如何基于python操作excel并获取内容
2019/12/24 Python
Scrapy框架基本命令与settings.py设置
2020/02/06 Python
Python使用plt.boxplot() 参数绘制箱线图
2020/06/04 Python
Python使用sys.exc_info()方法获取异常信息
2020/07/23 Python
Argos官网:英国家喻户晓的百货零售连锁商
2017/04/03 全球购物
Casadei卡萨蒂官网:意大利奢侈鞋履品牌
2017/10/28 全球购物
少先大队干部竞选稿
2015/11/20 职场文书
用position:sticky完美解决小程序吸顶问题的实现方法
2021/04/24 HTML / CSS
Java中的继承、多态以及封装
2022/04/11 Java/Android
使用Django框架创建项目
2022/06/10 Python