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

继承与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实现有返回值的子类实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • Python 多线程其他属性以及继承Thread类详解

    一.线程常用属性 1.threading.currentThread:返回当前线程变量 2.threading.enumerate:返回一个包含正在运行的线程的list,正在运行的线程指的是线程启动后,结束前的状态 3.threading.activeCount:返回正在运行的线程数量,效果跟len(threading.enumer)一样 4.thr.setName:给线程设置名字 5.thr.getName:得到线程的名字. 举例: mport _thread as thread import

  • python从子线程中获得返回值的方法

    如下所示: # coding:utf-8 import time from threading import Thread def foo(number): time.sleep(20) return number class MyThread(Thread): def __init__(self, number): Thread.__init__(self) self.number = number def run(self): self.result = foo(self.number) d

  • 对python:threading.Thread类的使用方法详解

    Python Thread类表示在单独的控制线程中运行的活动.有两种方法可以指定这种活动: 1.给构造函数传递回调对象 mthread=threading.Thread(target=xxxx,args=(xxxx)) mthread.start() 2.在子类中重写run() 方法 这里举个小例子: import threading, time class MyThread(threading.Thread): def __init__(self): threading.Thread.__in

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

    继承与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) d

  • python使用threading获取线程函数返回值的实现方法

    threading用于提供线程相关的操作,线程是应用程序中工作的最小单元.python当前版本的多线程库没有实现优先级.线程组,线程也不能被停止.暂停.恢复.中断. threading模块提供的类:  Thread, Lock, Rlock, Condition, [Bounded]Semaphore, Event, Timer, local. threading 模块提供的常用方法: threading.currentThread(): 返回当前的线程变量. threading.enumera

  • Python线程threading(Thread类)

    目录 前言 Python创建线程 threading 调用Thread类的构造器创建线程 继承Thread类创建线程类 Thread join()用法 前言 几乎所有的操作系统都支持同时运行多个任务,每个任务通常是一个程序,每一个运行中的程序就是一个进程,即进程是应用程序的执行实例.现代的操作系统几乎都支持多进程并发执行.注意,并发和并行是两个概念,并行指在同一时刻有多条指令在多个处理器上同时执行:并发是指在同一时刻只能有一条指令执行,但多个进程指令被快速轮换执行,使得在宏观上具有多个进程同时执

  • python在回调函数中获取返回值的方法

    python中有用到回调函数的时候,而回调函数又需要返回数值的时候,就需要先将所被传为回调函数的函数先赋值给一个变量,然后等回调结束之后,将这个变量取值回来就可以了. 如我用到到的调用xmlreader时,传入的一个函数需要取回返回值的代码: # 创建一个 XMLReader parser = xml.sax.make_parser() # turn off namepsaces parser.setFeature(xml.sax.handler.feature_namespaces, 0) #

  • 解决python 执行shell命令无法获取返回值的问题

    问题背景:利用python获取服务器中supervisor状态信息时发现未能获取到返回值. python获取执行shell命令后返回值得几种方式: # 1.os模块 ret = os.popen("supervisorctl status") ret_data = ret.read() # 2.subprocess模块 ret = subprocess.Popen('supervisorctl status',shell=True,stdout=subprocess.PIPE) out

  • js弹出窗口返回值的简单实例

    a.html: <form name="form1" method="post" action=""> <a href="javascript:void(null)" class="add" onClick="open('b.html','','resizable=1,scrollbars=1,status=no,toolbar=no,menu=no,width=500,heig

  • python中闭包Closure函数作为返回值的方法示例

    前言 首先看看闭包的概念:闭包(Closure)是词法闭包(Lexical Closure)的简称,是引用了自由变量的函数.这个被引用的自由变量将和这个函数一同存在,即使已经离开了创造它的环境也不例外.所以,闭包是由函数和与其相关的引用环境组合而成的实体. 一.函数作为返回值 高阶函数除了可以接受函数作为参数外,还可以把函数作为结果值返回. >>> def lazy_sum(*args): ... def sum(): ... ax = 0 ... for n in args: ...

  • Python中Threading用法详解

    Python的threading模块松散地基于Java的threading模块.但现在线程没有优先级,没有线程组,不能被销毁.停止.暂停.开始和打断. Java Thread类的静态方法,被移植成了模块方法. main thread: 运行python程序的线程 daemon thread 守护线程,如果守护线程之外的线程都结束了.守护线程也会结束,并强行终止整个程序.不要在守护进程中进行资源相关操作.会导致资源不能正确的释放.在非守护进程中使用Event. Thread 类 (group=No

  • Python中线程threading.Thread的使用详解

    目录 1. 线程的概念 2. threading.thread()的简单使用 2.1 添加线程可以是程序运行更快 2.2 主线程会等待所有的子线程结束后才结束 3.查看线程数量 4.线程参数及顺序 4.1 传递参数的方法 4.2 线程的执行顺序 5. 守护线程 1. 线程的概念 线程,有时被称为轻量级进程(Lightweight Process,LWP),是程序执行流的最小单元.一个标准的线程由线程ID,当前指令指针(PC),寄存器集合和堆栈组成.另外,线程是进程中的一个实体,是被系统独立调度和

随机推荐