线程中的条件和定时器

Posted whylinux

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了线程中的条件和定时器相关的知识,希望对你有一定的参考价值。

  1.线程中的条件

# 条件
    # acquire release
    # wait
    # notify
    # 一个条件被创建之初,类似默认有一个False状态,False状态会影响wait,使wait一直处于等待状态
    # notify(int数据类型). 造钥匙,当条件对象notify了,条件对象的wait就会解除阻塞,notify传递的参数是几,条件对象的wait就会解除几次阻塞

import time
from threading import Condition # 导入线程条件模块
from threading import Thread


def func(con, i):
    con.acquire()   # 拿锁
    print(线程%s % i)
    con.wait()  #   创建的10个线程都会阻塞在这,等到notify(num)造钥匙后,就会有num个线程解除阻塞在这里,con.release num次后,con条件又被阻塞在这里,钥匙不会归还
    print(第%s个 % i)
    con.release()

if __name__ == __main__:
    con = Condition()   # 创建一个线程条件
    for i in range(10):
        t = Thread(target=func, args=(con, i)).start()

    while 1:
        num = int(input(>>>))
        con.acquire()
        con.notify(num) # 条件调用notify造num把钥匙,有num把
        con.release()

  2.线程中的定时器

# 定时时间到后触发的线程

import time
from threading import Timer

def func():
    print(被执行了)

t = Timer(2, func)  # 创建一个定时器,绑定的线程是func, start后2S后只会执行一次
t.start()

print(haha)

 

以上是关于线程中的条件和定时器的主要内容,如果未能解决你的问题,请参考以下文章

计时器类中的潜在竞争条件?

自动刷新android片段,直到满足条件

测试片段不执行定时器或示例超时

《Python》线程之锁信号量事件条件定时器队列

线程--守护线程线程锁信号量事件条件定时器队列池

python中的线程(zz)