threading 自学笔记
2019-12-25 本文已影响0人
NanaCti
获取threading信息
- threading.active_count()
用于获取活动的线程数量 - threading.enumerate()
以列表形式返回活动的线程对象 - threading.main_thread()
返回主线程对象 - threading.current_thread()
返回当前所处的线程对象 - threading.get_ident()
返回当前线程的 ID - threading.get_native_id()
返回当前线程的原生集成线程 ID
新建线程之前的设置项
- threading.settrace(func)
设置一个跟踪函数,用于在run()执行之前被调用。 - threading.setprofile(func)
设置一个跟踪函数,用于在run()执行完毕之后调用。 - threading.stack_size([size])
返回创建线程时用到堆栈大小,或者传入参数设置堆栈大小 - threading.TIMEOUT_MAX
用于设置timeout 的最大值
线程实例的方法
- threading.local()
用于创建一个储存线程数据的实例 - run()
run方法是线程开始后调用,不通过继承直接调用时target 参数就是run方法 - Thread.start()
开始线程活动。会调用run方法在独立的线程中运行 - Thread.join(timeout=None)
调用了这个方法的线程会成为一个阻塞线程,在线程完成之前 ,主线程不会退出 - Thread.name
用于识别 - getName()
获取线程name - setName()
设置线程name - Thread. ident || native_id
同threading一样 - Thread.is_alive()
返回线程是否存活 - Thread.daemon
返回线程是否是守护线程,必须在线程开始前设置好才能使用,默认是false
锁
- threading.Lock
一旦一个线程获得一个锁,会阻塞随后尝试获得锁的线程,直到它被释放 - Lock.acquire(blocking=True, timeout=-1)
可以阻塞或非阻塞地获得锁。blocking为false的时候不阻塞 - Lock.release()
释放锁 - RLock
与上文中的Lock差别为,RLock可以在同一线程中重复的上锁与解锁
Condition 条件对象
- wait()
使当前线程进入等待队列,并释放该线程所拥有的锁 - wait_for()
等待,直到条件计算为真 - notify()
用来唤醒由wait()引起的被挂起的线程,只有一个被唤醒 - notifyAll()
唤醒全部
threading.Semaphore(value=1) 信号量对象
Semaphore的value参数表示内部计数器的初始值,默认值为0。信号量内部有个计数器,它的计算方式:release()调用数减去acquire()调用数加上一个初始值。例如上边给的初始值为0,release()调用1次,acquire()调用5次.计算值为-4,则acquire()方法将会阻塞到可以返回时的计数器不是负数,也就是只有第一个线程返回为0
————————————————
原文链接:https://blog.csdn.net/qq_33371343/article/details/79201161
threading.Timer() 定时器对象
- cancel()
取消定时器,在定时器结束之前