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 提取文件的小程序
Jul 29 Python
使用python爬虫实现网络股票信息爬取的demo
Jan 05 Python
Python中单例模式总结
Feb 20 Python
python实现简单tftp(基于udp协议)
Jul 30 Python
解决使用pycharm提交代码时冲突之后文件丢失找回的方法
Aug 05 Python
python requests爬取高德地图数据的实例
Nov 10 Python
Python 实现毫秒级淘宝抢购脚本的示例代码
Sep 16 Python
基于Python实现大文件分割和命名脚本过程解析
Sep 29 Python
重写django的model下的objects模型管理器方式
May 15 Python
python 如何利用argparse解析命令行参数
Sep 11 Python
python中添加模块导入路径的方法
Feb 03 Python
python xlwt模块的使用解析
Apr 13 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
2006/12/14 PHP
Wordpress php 分页代码
2009/10/21 PHP
php常用字符串处理函数实例分析
2014/11/22 PHP
解决ThinkPHP下使用上传插件Uploadify浏览器firefox报302错误的方法
2015/12/18 PHP
php有效防止图片盗用、盗链的两种方法
2016/11/01 PHP
php基于自定义函数记录log日志方法
2017/07/21 PHP
JQuery扩展插件Validate 1 基本使用方法并打包下载
2011/09/05 Javascript
JavaScript学习笔记(三):JavaScript也有入口Main函数
2015/09/12 Javascript
JS实现发送短信验证后按钮倒计时功能(防止刷新倒计时失效)
2017/07/07 Javascript
angular中不同的组件间传值与通信的方法
2017/11/04 Javascript
Vue2.0 事件的广播与接收(观察者模式)
2018/03/14 Javascript
浅析vue.js数组的变异方法
2018/06/30 Javascript
vue实现新闻展示页的步骤详解
2019/04/11 Javascript
JS实现简单随机3D骰子
2019/10/24 Javascript
Vue项目移动端滚动穿透问题的实现
2020/05/19 Javascript
Vuex的各个模块封装的实现
2020/06/05 Javascript
[00:12]2018DOTA2亚洲邀请赛 sylar表现SOLO技艺
2018/04/06 DOTA
Python之list对应元素求和的方法
2018/06/28 Python
python实现给微信指定好友定时发送消息
2019/04/29 Python
python topk()函数求最大和最小值实例
2020/04/02 Python
python和JavaScript哪个容易上手
2020/06/23 Python
python 装饰器的使用示例
2020/10/10 Python
python定时截屏实现
2020/11/02 Python
PyCharm 解决找不到新打开项目的窗口问题
2021/01/15 Python
甜点店创业计划书
2014/01/27 职场文书
学校消防安全制度
2014/01/30 职场文书
创意广告词
2014/03/17 职场文书
房屋委托书范本
2014/04/04 职场文书
班子个人四风问题整改措施
2014/10/04 职场文书
防汛工作情况汇报
2014/10/28 职场文书
销售员岗位职责
2015/02/10 职场文书
党支部意见范文
2015/06/02 职场文书
小学英语听课心得体会
2016/01/14 职场文书
go select编译期的优化处理逻辑使用场景分析
2021/06/28 Golang
MySQL高速缓存启动方法及参数详解(query_cache_size)
2021/07/01 MySQL
MySQL分库分表详情
2021/09/25 MySQL