thrading
这个模块在较低级的模块
_thread
基础上建立较高级的线程接口。
thrading.Thread 线程对象
threading.Thread(group=None, target=None, name=None, args=(), kwargs={}, *, daemon=None)
调用这个构造函数时,必需带有关键字参数。参数如下:
-
group 应该为
None
;为了日后扩展ThreadGroup
类实现而保留。 -
target 是用于
run()
方法调用的可调用对象。默认是None
,表示不需要调用任何方法。 - name 是线程名称。默认情况下,由 "Thread-N" 格式构成一个唯一的名称,其中 N 是小的十进制数。
-
args 是用于调用目标函数的参数元组。默认是
()
。 -
kwargs 是用于调用目标函数的关键字参数字典。默认是
{}
。 - 如果不是
None
,daemon 参数将显式地设置该线程是否为守护模式。 如果是None
(默认值),线程将继承当前线程的守护模式属性。 - 如果子类型重载了构造函数,它一定要确保在做任何事前,先发起调用基类构造器(
Thread.__init__()
)。
在 3.3 版更改: 加入 daemon 参数。
start()
run()
join(timeout=None)
name
ident
is_alive()
isDaemon()
threading下可直接调用的函数
-
threading.active_count()
返回当前存活的线程类Thread
对象。返回的计数等于enumerate()
返回的列表长度。import threading print(threading.active_count()) # 运行结果:1,即为主线程
-
threading.current_thread()
返回当前对应调用者的控制线程的Thread
对象。如果调用者的控制线程不是利用threading
创建,会返回一个功能受限的虚拟线程对象。print(threading.current_thread()) # 运行结果 <_MainThread(MainThread, started 6712)>
-
threading.get_ident()
返回当前线程的 “线程标识符”。它是一个非零的整数。它的值没有直接含义,主要是用作 magic cookie,比如作为含有线程相关数据的字典的索引。线程标识符可能会在线程退出,新线程创建时被复用。print(threading.get_ident()) # 6712
python v3.3新增
threading.enumerate()
以列表形式返回当前所有存活的Thread
对象。 该列表包含守护线程,current_thread()
创建的虚拟线程对象和主线程。它不包含已终结的线程和尚未开始的线程。threading.main_thread()
返回主Thread
对象。一般情况下,主线程是Python解释器开始时创建的线程。
python v3.4新增
threading.settrace(func)
-
为所有threading
模块开始的线程设置追踪函数。在每个线程的run()
方法被调用前,func 会被传递给sys.settrace()
。threading.setprofile(func)
为所有threading
模块开始的线程设置性能测试函数。在每个线程的run()
方法被调用前,func 会被传递给sys.setprofile()
。threading.stack_size([size])
返回创建线程时用的堆栈大小。常量:
threading.TIMEOUT_MAX
阻塞函数(Lock.acquire()
,RLock.acquire()
,Condition.wait()
, ...)中形参 timeout 允许的最大值。传入超过这个值的 timeout 会抛出OverflowError
异常。