– 低级线程API-并发执行(Python教程)(参考资料)
_thread
– 低级线程API
此模块提供了用于处理多个线程(也称为light-weight processes或tasks)的低级原语 – 多个控制线程共享其全局数据空间。为了同步,提供了简单的锁(也称为mutexes或binary semaphores).threading
模块提供了一个更容易使用和更高级别的线程,它构建在该模块之上。
在版本3.7中更改:这个模块以前是可选的,现在总是可用的.
这个模块定义了以下常量和函数:
- exception
_thread.
error
-
引发特定于线程的错误.
更改版本3.3:这是内置的同义词
RuntimeError
.
_thread.
LockType
-
这是锁定对象的类型.
_thread.
start_new_thread
(function, args [, kwargs] )-
启动一个新线程并返回其标识符。线程使用参数列表function(必须是元组)执行函数args。可选kwargsargument指定关键字参数的字典。当函数返回时,线程将以静默方式退出。当函数以未处理的异常终止时,打印堆栈跟踪,然后线程退出(但其他线程继续运行).
_thread.
interrupt_main
()-
提升
KeyboardInterrupt
主线程中的异常。一个子线程可以使用这个函数来中断主线程.
_thread.
exit
()-
提起
SystemExit
例外。如果没有被抓住,这将导致线程无声地退出.
_thread.
get_ident
()-
返回当前线程的’线程标识符’。这是一个非零整数。它的价值没有直接意义;它旨在作为一种神奇的饼干用于例如索引特定于线程的数据的字典。当线程退出并创建另一个线程时,线程标识符可以被回收.
_thread.
stack_size
( [size])-
返回创建新线程时使用的线程堆栈大小。可选的size参数指定用于随后创建的线程的堆栈大小,并且必须为0(使用平台或配置的默认值)或者至少为32,768(32 KiB)的positiveinteger值。如果未指定size,则使用0。如果不支持更改线程堆栈大小,则引发
RuntimeError
。如果指定的堆栈大小无效,则引发ValueError
并且堆栈大小未经修改。32 KiBis目前是支持的最小堆栈大小值,以保证解释器本身有足够的堆栈空间。注意,一些平台可能对堆栈大小的值具有特定限制,例如要求最小堆栈大小>32 KiB或要求分配系统内存页面大小的倍数 – 平台文档应参考更多信息(4 KiB页面是常见的;在没有更具体信息的情况下,使用4096的倍数表示堆栈大小是建议的方法).可用性:Windows,带POSIX线程的系统
锁定对象有以下方法:
lock.
acquire
(waitflag=1, timeout=-1)-
没有任何可选参数,此方法无条件地获取锁,如果必要等待,直到它被另一个线程释放(一次只有一个线程可以获得一个锁 – 这就是它们存在的原因).
如果整数waitflag参数存在,动作取决于它的值:如果它为零,只有在没有等待的情况下立即获取锁定时才获取锁定,而如果它不为零,则锁定是按照上面的方式获得的.
如果浮点timeout参数存在且为正,则指定返回前的最大等待时间(以秒为单位)。否定timeout参数指定无限制的等待。你不能指定timeout如果waitflag为零.
如果成功获得锁定,则返回值为
True
,如果没有,则返回False
.在版本3.2:timeout参数是新的.
在版本3.2中更改:锁定获取现在可以被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")
警告:
评论被关闭。