python threading --- 基于线程的并行
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python threading --- 基于线程的并行,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3507字,纯文字阅读大概需要6分钟。
内容图文
threading --- 基于线程的并行
这个模块在较低级的模块 _thread 基础上建立较高级的线程接口。
这个模块定义了以下函数:
threading.
active_count
()-
返回当前存活的线程类 Thread 对象。返回的计数等于 enumerate() 返回的列表长度。
threading.
get_ident
()-
返回当前线程的 “线程标识符”。它是一个非零的整数。它的值没有直接含义,主要是用作 magic cookie,比如作为含有线程相关数据的字典的索引。线程标识符可能会在线程退出,新线程创建时被复用。
3.3 新版功能.
threading.
enumerate
()-
以列表形式返回当前所有存活的 Thread 对象。 该列表包含守护线程,current_thread() 创建的虚拟线程对象和主线程。它不包含已终结的线程和尚未开始的线程。
threading.
main_thread
()-
返回主 Thread 对象。一般情况下,主线程是Python解释器开始时创建的线程。
3.4 新版功能.
threading.
settrace
(func)-
为所有 threading 模块开始的线程设置追踪函数。在每个线程的 run() 方法被调用前,func 会被传递给 sys.settrace() 。
threading.
setprofile
(func)-
为所有 threading 模块开始的线程设置性能测试函数。在每个线程的 run() 方法被调用前,func 会被传递给 sys.setprofile() 。
threading.
stack_size
([size])-
返回创建线程时用的堆栈大小。可选参数 size 指定之后新建的线程的堆栈大小,而且一定要是0(根据平台或者默认配置)或者最小是32,768(32KiB)的一个正整数。如果 size 没有指定,默认是0。如果不支持改变线程堆栈大小,会抛出 RuntimeError 错误。如果指定的堆栈大小不合法,会抛出 ValueError 错误并且不会修改堆栈大小。32KiB是当前最小的能保证解释器有足够堆栈空间的堆栈大小。需要注意的是部分平台对于堆栈大小会有特定的限制,例如要求大于32KiB的堆栈大小或者需要根据系统内存页面的整数倍进行分配 - 应当查阅平台文档有关详细信息(4KiB页面比较普遍,在没有更具体信息的情况下,建议的方法是使用4096的倍数作为堆栈大小)。
适用于: Windows,具有 POSIX 线程的系统。
这个模块同时定义了以下常量:
threading.
TIMEOUT_MAX
-
阻塞函数( Lock.acquire(), RLock.acquire(), Condition.wait(), ...)中形参 timeout 允许的最大值。传入超过这个值的 timeout 会抛出 OverflowError 异常。
3.2 新版功能.
这个模块定义了许多类,详见以下部分。
该模块的设计基于 Java的线程模型。 但是,在Java里面,锁和条件变量是每个对象的基础特性,而在Python里面,这些被独立成了单独的对象。 Python 的 Thread 类只是 Java 的 Thread 类的一个子集;目前还没有优先级,没有线程组,线程还不能被销毁、停止、暂停、恢复或中断。 Java 的 Thread 类的静态方法在实现时会映射为模块级函数。
下列描述的方法都是自动执行的。
-
一旦线程活动开始,该线程会被认为是 '存活的' 。当它的 run() 方法终结了(不管是正常的还是抛出未被处理的异常),就不是'存活的'。 is_alive() 方法用于检查线程是否存活。
-
线程有名字。名字可以传递给构造函数,也可以通过 name 属性读取或者修改。
-
一个线程可以被标记成一个 "守护线程" 。这个标志的意义是,只有守护线程都终结,整个Python程序才会退出。初始值继承于创建线程。这个标志可以通过 daemon 特征属性或者 守护 构造函数参数来设置。
注解:守护线程在程序关闭时会突然关闭。他们的资源(例如已经打开的文档,数据库事务等等)可能没有被正确释放。如果你想你的线程正常停止,设置他们成为非守护模式并且使用合适的信号机制
6.有个 "主线程" 对象;这对应Python程序里面初始的控制线程。它不是一个守护线程。
7."虚拟线程对象" 是可以被创建的。这些是对应于“外部线程”的线程对象,它们是在线程模块外部启动的控制线程,例如直接来自C代码。虚拟线程对象功能受限;他们总是被认为是存活的和守护模式,不能被 join() 。因为无法检测外来线程的终结,它们永远不会被删除。
内容总结
以上是互联网集市为您收集整理的python threading --- 基于线程的并行全部内容,希望文章能够帮你解决python threading --- 基于线程的并行所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。