Python多线程4:_thread
来源:互联网 发布:阿里云北京机房地址 编辑:程序博客网 时间:2024/06/09 23:52
_thread模块是threading模块的基础模块,为多线程提供了低级别的基元(也称为轻量级进程或任务)。为了同步,简单的锁(也叫做互斥锁或二元信号量)被提供。threading模块在该模块的基础上提供了更易使用并且更高级别的线程API。
_thread模块
Lock对象
该模块支持Windows、Linux、SGI IRIX、Solaris 2.x、以及任何实现了POSIX线程的系统。
_thread模块
它定义了如下的常量和函数:
exception _thread.error
线程错误。从3.3版本呢开始相当于RuntimeError。
_thread.LockType
锁对象类型。
_thread.start_new_thread(function, args[, kwargs])
开始一个新的线程并返回它的标识符。线程使用参数args(必须是一个元组)执行function函数。可选参数kwargs制定了一个参数字典。当函数返回时,线程退出。当函数异常终止时,一个栈轨迹被打印然后线程退出(但是其它线程继续执行)。
_thread.interrupt_main()
在主线程抛出一个KeyboardInterrupt异常。一个子线程能用这个函数中断主线程。
_thread.exit()
抛出SystemExit异常。如果不被捕获,将导致线程退出。
_thread.allocate_lock()
返回一个新的锁对象。锁的方法在下一节讲述。锁初始处于未锁状态。
_thread.get_ident()
返回当前线程的“线程标识符”。这是一个非0整数。它的值没有直接的含义;他被作为魔法饼干使用,例如:索引特定线程数据的字典信息。线程标识符会被循环使用。
_thread.stack_size([size])
返回线程栈的大小,当创建新线程的时候使用。可选参数size指定接下来创建线程需要的栈大小,必须是0(用平台或者配置默认)或者一个最小32768(32KiB)的正整数,如果改变线程栈大小不被支持,一个RuntimeError异常被抛出;如果指定的栈大小是无效的,一个ValueError被抛出并且栈大小不被修改。32KiB是当前支持的最小的栈大小,为解释器自身保证足够的栈空间。注意,一些平台对栈大小的值有特殊的限制,例如要求最小栈大小大于32KiB,或者要求必须分配系统内存页大小的倍数(参考平台文档,页大小通常是4KiB)。在以下平台可用:Windows、带有POSIX线程的系统。
_thread.TIMEOUT_MAX
Lock.acquire()的timeout参数允许的最大值。若指定的值超过该值,则抛出OverflowError。
exception _thread.error
线程错误。从3.3版本呢开始相当于RuntimeError。
_thread.LockType
锁对象类型。
_thread.start_new_thread(function, args[, kwargs])
开始一个新的线程并返回它的标识符。线程使用参数args(必须是一个元组)执行function函数。可选参数kwargs制定了一个参数字典。当函数返回时,线程退出。当函数异常终止时,一个栈轨迹被打印然后线程退出(但是其它线程继续执行)。
_thread.interrupt_main()
在主线程抛出一个KeyboardInterrupt异常。一个子线程能用这个函数中断主线程。
_thread.exit()
抛出SystemExit异常。如果不被捕获,将导致线程退出。
_thread.allocate_lock()
返回一个新的锁对象。锁的方法在下一节讲述。锁初始处于未锁状态。
_thread.get_ident()
返回当前线程的“线程标识符”。这是一个非0整数。它的值没有直接的含义;他被作为魔法饼干使用,例如:索引特定线程数据的字典信息。线程标识符会被循环使用。
_thread.stack_size([size])
返回线程栈的大小,当创建新线程的时候使用。可选参数size指定接下来创建线程需要的栈大小,必须是0(用平台或者配置默认)或者一个最小32768(32KiB)的正整数,如果改变线程栈大小不被支持,一个RuntimeError异常被抛出;如果指定的栈大小是无效的,一个ValueError被抛出并且栈大小不被修改。32KiB是当前支持的最小的栈大小,为解释器自身保证足够的栈空间。注意,一些平台对栈大小的值有特殊的限制,例如要求最小栈大小大于32KiB,或者要求必须分配系统内存页大小的倍数(参考平台文档,页大小通常是4KiB)。在以下平台可用:Windows、带有POSIX线程的系统。
_thread.TIMEOUT_MAX
Lock.acquire()的timeout参数允许的最大值。若指定的值超过该值,则抛出OverflowError。
Lock对象
Lock对象包含下面的方法。
lock.acquire(waitflag=1, timeout=-1)
不带参数的情况下,该方法无条件地请求锁,如有必要,线程将等待直到其它线程释放锁(一次仅一个线程能获取锁)。
如果整数参数waitflag被设置,行为将依赖该参数的值:如果为0,锁将不等待立即返回,如果为非0,则锁则无条件地等待。
如果浮点型参数timeout被设置并且大于0,它指定等待的最大秒数。一个负的timeout表示永久等待。如果waitflag为0,你不能指定timeout。
如果锁获取成功,则返回True,否则,返回False。
从3.2版开始,acquire能被POSIX的信号中断。
lock.release()
释放锁,锁必须先被获取,但不要求是同一个线程。
lock.locked()
返回锁的状态:如果已经被某个线程获取,则返回True,否则返回False。
对于这些方法,也能通过with语句来使用,例如:
lock.acquire(waitflag=1, timeout=-1)
不带参数的情况下,该方法无条件地请求锁,如有必要,线程将等待直到其它线程释放锁(一次仅一个线程能获取锁)。
如果整数参数waitflag被设置,行为将依赖该参数的值:如果为0,锁将不等待立即返回,如果为非0,则锁则无条件地等待。
如果浮点型参数timeout被设置并且大于0,它指定等待的最大秒数。一个负的timeout表示永久等待。如果waitflag为0,你不能指定timeout。
如果锁获取成功,则返回True,否则,返回False。
从3.2版开始,acquire能被POSIX的信号中断。
lock.release()
释放锁,锁必须先被获取,但不要求是同一个线程。
lock.locked()
返回锁的状态:如果已经被某个线程获取,则返回True,否则返回False。
对于这些方法,也能通过with语句来使用,例如:
import _threada_lock = _thread.allocate_lock()with a_lock: print("a_lock is locked while this executes")
0 0
- Python多线程4:_thread
- python3 多线程 threading _thread
- 黑马程序员_Thread多线程的学习
- 40岁开始学Linux(4)_Thread
- 【JavaSE学习笔记】多线程01_Thread,Runnable,synchronize同步机制
- python TypeError: can't pickle _thread.RLock objects
- android_process_and _thread
- 多线程_Thread类简介及创建线程的两种方式
- java之_Thread(线程)
- java之_Thread(线程)
- Java基础_Thread(一)
- 个人学习_Thread&Runnable
- c++11知识点2_thread
- Python多线程
- Python多线程
- Python多线程
- python多线程
- python 多线程
- 解决WIN7 64位 plsql 连接数据库报Make sure you have the 32 bits Oracle Client installed
- Heartbeat和Keepalived的比较
- Android Ant打包及其环境变量配置
- boost swap实现
- NSDate和NSString相互转换
- Python多线程4:_thread
- Xcode 使用技巧
- URL的组成
- 字符集修改
- ios委托使用原则
- 进程管理器java内存比性能工具监控的内存大,且内存不下降
- 游戏动词和宾语设计案例精选
- leetcode由易入难——【4】Decode Ways
- Android Studio 错误: 非法字符: '\ufeff' 解决方案|错误: 需要class, interface或enum