[转] Python标准库的threading.Thread类
这个类表示在单独的控制线程中运行的活动。有两种方法可以指定这种活动,给构造函数传递回调对象,或者在子类中重写run()方法。其他方法(除了构造函数)都不应在子类中被重写。换句话说,在子类中只有__init__()和run()方法被重写。
一旦线程对象被创建,它的活动需要通过调用线程的start()方法来启动。这方法再调用控制线程中的run方法。
一旦线程被激活,则这线程被认为是'alive'(活动)。当它的run()方法终止时-正常退出或抛出未处理的异常,则活动状态停止。isAlive()方法测试线程是否是活动的。
一个线程能调用别的线程的join()方法。这将阻塞调用线程,直到拥有join()方法的线程的调用终止。
线程有名字。名字能传给构造函数,通过setName()方法设置,用getName()方法获取。
线程能被标识为'daemon thread'(守护线程).这标志的特点是当剩下的全是守护线程时,则Python程序退出。它的初始值继承于创建线程。这标志用setDaemon()方法设置,用isDaemon()获取。
存在'main thread'(主线程),它对应于Python程序的初始控制线程。它不是后台线程。
有可能存在'dummy thread objects'(哑线程对象)被创建。这些线程对应于'alien threads'(外部线程),它们在Python的线程模型之外被启动,像直接从C语言代码中启动。哑线程对象只有有限的功能,它们总是被认为是活动的,守护线程,不能使用join()方法。它们从不能被删除,既然它无法监测到外部线程的中止。
- class Thread(group=None, target=None, name=None, args=(), kwargs={})
-
构造函数能带有关键字参数被调用。这些参数是:
group 应当为 None,为将来实现ThreadGroup类的扩展而保留。
target 是被 run()方法调用的回调对象. 默认应为None, 意味着没有对象被调用。
name 为线程名字。默认,形式为'Thread-N'的唯一的名字被创建,其中N 是比较小的十进制数。
args是目标调用参数的tuple,默认为()。
kwargs是目标调用的参数的关键字dictionary,默认为{}。
如果子线程重写了构造函数,它应保证调用基类的构造函数(Thread.__init__()),在线程中进行其他工作之前。
- start()
-
启动线程活动。
在每个线程对象中最多被调用一次。它安排对象的run() 被调用在一单独的控制线程中。
run()
- 用以表示线程活动的方法。
-
你可能在子类重写这方法。标准的 run()方法调用作为target传递给对象构造函数的回调对象。如果存在参数,一系列关键字参数从args和kwargs参数相应地起作用。
- join([timeout])
- 等待至线程中止。这阻塞调用线程直至线程的join() 方法被调用中止-正常退出或者抛出未处理的异常-或者是可选的超时发生。
-
当timeout参数未被设置或者不是
None
,它应当是浮点数指明以秒计的操作超时值。因为join()总是返回None
,你必须调用isAlive()来判别超时是否发生。 -
当timeout 参数没有被指定或者是
None
时,操作将被阻塞直至线程中止。 -
线程能被join()许多次。
-
线程不能调用自身的join(),因为这将会引起死锁。
-
在线程启动之前尝试调用join()会发生错误。
- getName()
- 返回线程名。
- setName(name)
- 设置线程名。
-
这名字是只用来进行标识目的的字符串。它没有其他作用。多个线程可以取同一名字。最初的名字通过构造函数设置。
- isAlive()
- 返回线程是否活动的。
-
大致上,线程从 start()调用开始那点至它的run()方法中止返回时,都被认为是活动的。模块函数enumerate()返回活动线程的列表。
- isDaemon()
- 返回线程的守护线程标志。
- setDaemon(daemonic)
- 设置守护线程标志为布尔值daemonic。它必须在start()调用之前被调用。
-
初始值继承至创建线程。
-
当没有活动的非守护线程时,整个Python程序退出。
转载于:https://www.cnblogs.com/huazi/archive/2012/11/13/2769018.html
[转] Python标准库的threading.Thread类相关推荐
- python threading_【python标准库学习】thread,threading(一)多线程的介绍和使用
在单个程序中我们经常用多线程来处理不同的工作,尤其是有的工作需要等,那么我们会新建一个线程去等然后执行某些操作,当做完事后线程退出被回收.当一个程序运行时,就会有一个进程被系统所创建,同时也会有一个线 ...
- Python入门之——线程threading(Thread类)简介
几乎所有的操作系统都支持同时运行多个任务,每个任务通常是一个程序,每一个运行中的程序就是一个进程,即进程是应用程序的执行实例.现代的操作系统几乎都支持多进程并发执行.注意,并发和并行是两个概念,并行指 ...
- Python标准库threading模块Condition原理浅析
Python标准库threading模块Condition原理浅析 本文环境python3.5.2 threading模块Condition的实现思路 在Python的多线程实现过程中,在Linux平 ...
- python 标准库 —— 线程与同步(threading、multiprocessing)
1. 创建线程 使用 os 下的 fork() 函数调用(仅限 Unix 系统) import os print('current process (%s) starts ...' % (os.get ...
- Python 批量创建线程及threading.Thread类的常用函数及方法
在<[Python]线程的创建.执行.互斥.同步.销毁>(点击打开链接)中介绍了Python中线程的使用,但是里面线程的创建,使用了很原始的方式,一行代码创建一条.其实,Python里是可 ...
- python 多线程 线程如何获得返回值 (重写threading.Thread类)
重写threading.Thread类: # -*- coding: utf-8 -*- """ @File : dontla_ThreadClass.py @Time ...
- Python标准库collections中与字典有关的类
Python标准库中提供了很多扩展功能,大幅度提高了开发效率.这里主要介绍OrderedDict类.defaultdict类和Counter类. (1)OrderedDict类 Python内置字典d ...
- python创建线程函数_Python多线程编程(三):threading.Thread类的重要函数和方法...
这篇文章主要介绍threading模块中的主类Thread的一些主要方法,实例代码如下: 复制代码 代码如下: ''' Created on 2012-9-7 @author: walfred @m ...
- Python标准库queue模块原理浅析
Python标准库queue模块原理浅析 本文环境python3.5.2 queue模块的实现思路 作为一个线程安全的队列模块,该模块提供了线程安全的一个队列,该队列底层的实现基于Python线程th ...
最新文章
- 数据结构(队列实现篇)
- mysql存储过程分析
- SAP SD微观研究之销售订单类型配置里有关PO的几个字段
- Servlet学习DAY_01:服务器概念/Web服务器的作用/ Servlet概念/ 如何关联和解除Tomcat/ 创建一个Web工程 /Servlet响应流程/ Get-Post /常见异常
- 成功人士,默默做的30件事 (4-6)
- 计算机应用办公软件实训报告,办公软件实习报告
- 聊聊 cookie 管理那些事
- python决策树分类鸢尾花_基于决策树—鸢尾花分类
- 天宫初级认证答案_百度初级认证试题答案
- 跑了10千米,再一次伤了膝盖
- “思考”绝非一时的想法——读大前研一《思考的技术》
- PCL之求点云的BoundingBox
- java 面向对象 1
- Tensorflow教程之语音识别
- 《OpenCv视觉之眼》Python图像处理二十:Opencv图像美化处理之图像流年、光照、浮雕、素描、怀旧、滤镜、毛玻璃、油漆特效处理
- Python计算机视觉-仿射扭曲简单实例
- VMX 进程已提前退出。VMware Workstation 无法连接到虚拟机。请确保您有权运行该程序、访问该程序使用的所有目录以及访问所有临时文件目录。
- apple API常用英语名词
- PAM-PDMDAAC聚丙烯酰胺-聚二甲基二烯丙基氯化铵/PEI-P(Asp-Hyd-ADR 聚乙烯亚胺-聚天冬氨酸
- 主板显卡服务器维修,显卡无显示怎么维修 显卡无显示解决方法【详细介绍】...