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操作mysql中文显示乱码的解决方法
Oct 11 Python
深入浅析python定时杀进程
Jun 06 Python
Python的网络编程库Gevent的安装及使用技巧
Jun 24 Python
python简单实现获取当前时间
Aug 27 Python
使用python调用zxing库生成二维码图片详解
Jan 10 Python
pycharm执行python时,填写参数的方法
Oct 29 Python
Python统计一个字符串中每个字符出现了多少次的方法【字符串转换为列表再统计】
May 05 Python
详解Numpy数组转置的三种方法T、transpose、swapaxes
May 27 Python
python字典的常用方法总结
Jul 31 Python
Python.append()与Python.expand()用法详解
Dec 18 Python
利用Python代码实现一键抠背景功能
Dec 29 Python
详解django使用include无法跳转的解决方法
Mar 19 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
比特率,大家看看这个就不用收音机音质去比MP3音质了
2021/03/01 无线电
用在PHP里的JS打印函数
2006/10/09 PHP
PHP stripos()函数及注意事项的分析
2013/06/08 PHP
PHP+Mysql实现多关键字与多字段生成SQL语句的函数
2014/11/05 PHP
利用PHP将部分内容用星号替换
2020/04/21 PHP
PHP和Mysql中转UTF8编码问题汇总
2015/10/10 PHP
PHP性能测试工具xhprof安装与使用方法详解
2018/04/29 PHP
Extjs学习笔记之四 工具栏和菜单
2010/01/07 Javascript
实例分析js和C#中使用正则表达式匹配a标签
2014/11/26 Javascript
Underscore.js 1.3.3 中文注释翻译说明
2015/06/25 Javascript
详解JavaScript正则表达式之RegExp对象
2015/12/13 Javascript
JavaScript实现解析INI文件内容的方法
2016/11/17 Javascript
easyui 中的datagrid跨页勾选问题的实现方法
2017/01/18 Javascript
JS中使用正则表达式g模式和非g模式的区别
2017/04/01 Javascript
Node.js安装配置图文教程
2017/05/10 Javascript
JS+canvas实现的五子棋游戏【人机大战版】
2017/07/19 Javascript
jQuery实现获取动态添加的标签对象示例
2018/06/28 jQuery
详解原生JS回到顶部
2019/03/25 Javascript
jquery 遍历hash操作示例【基于ajax交互】
2019/10/12 jQuery
微信小程序开发(二):页面跳转并传参操作示例
2020/06/01 Javascript
详解vue修改elementUI的分页组件视图没更新问题
2020/11/13 Javascript
python使用cookie库操保存cookie详解
2014/03/03 Python
Python编程实现微信企业号文本消息推送功能示例
2017/08/21 Python
Tensorflow实现神经网络拟合线性回归
2019/07/19 Python
Python Django框架防御CSRF攻击的方法分析
2019/10/18 Python
安装python3.7编译器后如何正确安装opnecv的方法详解
2020/06/16 Python
大门门卫岗位职责
2013/11/30 职场文书
先进工作者获奖感言
2014/02/08 职场文书
交通事故和解协议书
2014/09/25 职场文书
2014年驻村干部工作总结
2014/11/17 职场文书
2014年英语教研组工作总结
2014/12/06 职场文书
个人先进事迹总结
2015/02/26 职场文书
民事代理词范文
2015/05/25 职场文书
就业推荐表院系意见
2015/06/05 职场文书
Mysql中调试存储过程最简单的方法
2021/06/30 MySQL
DIV CSS实现网页背景半透明效果
2021/12/06 HTML / CSS