_thread —低级线程 API


该模块提供了用于处理多个线程(也称为“轻量级进程”或“任务”)的低级 Primitives-多个控制线程共享其全局数据空间。为了进行同步,提供了简单的锁(也称为* mutexes binary semaphores *)。 threading模块提供了更易于使用的Function,并在此模块的顶部构建了更高级别的线程 API。

在版本 3.7 中更改:此模块以前是可选的,现在始终可用。

该模块定义以下常量和函数:

在版本 3.3 中进行了更改:现在,它是内置RuntimeError的同义词。

当函数返回时,线程以静默方式退出。

当函数以未处理的异常终止时,将调用sys.unraisablehook()来处理该异常。 hook 参数的* object 属性是 function *。默认情况下,将打印堆栈跟踪,然后线程退出(但其他线程 continue 运行)。

当函数引发SystemExit异常时,它将被静默忽略。

在 3.8 版中进行了更改:sys.unraisablehook()现在用于处理未处理的异常。

如果signal.SIGINT不是由 Python 处理(将其设置为signal.SIG_DFLsignal.SIG_IGN),则此函数不执行任何操作。

Availability:Windows,FreeBSD,Linux,macOS,OpenBSD,NetBSD,AIX。

3.8 版的新Function。

Availability:Windows,具有 POSIX 线程的系统。

3.2 版中的新Function。

锁定对象具有以下方法:

如果存在整数* waitflag *,则操作取决于其值:如果为零,则仅当无需 await 就可以立即获取锁时才获取锁,而如果为非零,则如上所述那样无条件获取锁。

如果浮点* timeout 参数存在且为正数,则它指定返回前的最大 await 时间(以秒为单位)。负的 timeout 参数指定无限制的 await。如果 waitflag 为零,则不能指定 timeout *。

如果成功获取了锁,则返回值为True,否则为False

在版本 3.2 中更改:* timeout *参数是新的。

在版本 3.2 中更改:锁获取现在可以被 POSIX 上的 signal break。

除了这些方法外,还可以passwith语句使用锁定对象,例如:

import _thread

a_lock = _thread.allocate_lock()

with a_lock:
    print("a_lock is locked while this executes")

Caveats:

Note

首页