• 技术文章 >Python技术 >Python基础教程

    python线程事件Event的原理

    小妮浅浅小妮浅浅2021-08-23 09:30:24原创2295

    原理分析

    1、事件event中有一个全局内置标志Flag,值为True或False。

    2、使用wait函数的线程将处于堵塞状态。此时,Flag是指False。

    直到其他线程调用set函数将全球标志Flag放置为True,堵塞的线程将立即恢复运行,并使用isSet函数检查当前Flag状态。

    实例

    # !usr/bin/env python
    # -*- coding:utf-8 _*-
    # 导入线程模块
    import threading
     
    # 创建event事件
    eEvent = threading.Event()
     
    def get_girl_friend(id):
        print("单身狗{}都准备完毕,内置Flag状态:{}.....".format(id,eEvent.isSet()))
        eEvent.wait()
        print("单身狗%d告别单身....."%id)
     
     
    if __name__ == "__main__":
     
        thread_list = list()
     
        for i in range(1,11):
            # 创建并初始化线程
            t = threading.Thread(target=get_girl_friend,args=(i,))
            # 启动线程
            t.start()
            # 将线程句柄添加list列表中
            thread_list.append(t)
     
        # 所有线程准备完毕,将event内置Flag设置为True,恢复正在阻塞的线程
        eEvent.set()
     
        # 遍历列表,阻塞主线程
        for t in thread_list:
            # 阻塞主线程,等待所有子线程结束
            t.join()
     
        print("程序结束!")
     
     
    '''
    输出结果:
     
    单身狗1都准备完毕,内置Flag状态:False.....
    单身狗2都准备完毕,内置Flag状态:False.....
    单身狗3都准备完毕,内置Flag状态:False.....
    单身狗4都准备完毕,内置Flag状态:False.....
    单身狗5都准备完毕,内置Flag状态:False.....
    单身狗6都准备完毕,内置Flag状态:False.....
    单身狗7都准备完毕,内置Flag状态:False.....
    单身狗8都准备完毕,内置Flag状态:False.....
    单身狗9都准备完毕,内置Flag状态:False.....
    单身狗10都准备完毕,内置Flag状态:False.....
    单身狗5告别单身,内置Flag状态:True.....
    单身狗6告别单身,内置Flag状态:True.....
    单身狗7告别单身,内置Flag状态:True.....
    单身狗1告别单身,内置Flag状态:True.....
    单身狗8告别单身,内置Flag状态:True.....
    单身狗10告别单身,内置Flag状态:True.....
    单身狗4告别单身,内置Flag状态:True.....
    单身狗9告别单身,内置Flag状态:True.....
    单身狗3告别单身,内置Flag状态:True.....
    单身狗2告别单身,内置Flag状态:True.....
    程序结束!
    '''

    以上就是python线程事件Event的原理,希望对大家有所帮助。更多Python学习指路:python基础教程

    本文教程操作环境:windows7系统、Python 3.9.1,DELL G3电脑。

    专题推荐:python线程事件 event
    上一篇:python线程中Condition的原理 下一篇:python建造者模式是什么

    相关文章推荐

    • 什么是网络协议• python中的去除重复项的操作• python中少见的函数map()和partial()• python的sort()排序方法• Python中的文件读写-理论知识

    全部评论我要评论

    © 2021 Python学习网 苏ICP备2021003149号-1

  • 取消发布评论
  • 

    Python学习网