zoukankan      html  css  js  c++  java
  • python 多进程 Event的使用

    Event事件  多进程的使用

    通俗点儿讲  就是

    1.  Event().wait()    插入在进程中插入一个标记(flag)  默认为 false  然后flag为false时  程序会停止运行  进入阻塞状态  

    2.  Event().set()     使flag为Ture  然后程序会停止运行 进入运行状态  

    3.  Event().clear()      使flag为false  然后程序会停止运行 进入阻塞状态  

    4.  Event().is_set()   判断flag  是否为True  是的话 返回True  不是 返回false

    from multiprocessing import Event,Process
    import time
    from datetime import datetime
    from psutil import cpu_count
    
    
    def work(e,):
        # 子进程
        while True:
            #print('我是子进程,我先休息!')
            e.wait() #阻塞等待信号  这里插入了一个flag  默认为 false
            print('[S] 这是我的定时任务!',datetime.now().second)
            time.sleep(1)
          
    
    #信号:
        #某一些用户链接的时候,Nginx就会做出相应
        #Epoll: 信号|事件
    
    #21点51分
    def main():
        e = Event()
        a = int()
        p = Process(target=work,name='子进程',args=(e,))
        p.start()
        while True:
            if datetime.now().second > 10:
                print('[F] 子进程取消阻塞状态')
                e.set() #这里 等秒钟大于10S  就开启子进程 工作 使插入的flag为 True  然后继续执行
                break
        while True:
            if datetime.now().second > 30:
                print('[F] 子进程结束阻塞状态')
                e.clear() #这里 等秒钟大于30S  就停止子进程工作  使插入的flag为false  就会停止子进程工作
                break
        time.sleep(5)#休息5s
        e.set()#继续使flag 为真 然后执行子进程
        print('[F] 又开启了')
        time.sleep(5)#休息5s
        e.clear()#继续使flag 为假 然后停止子进程
        print('[F] 又停止了')
    
    if __name__ == '__main__':
        main()
       生命不息
       希望不止
       将来的你
       一定会感谢现在拼命的自己
       fighting!!!
  • 相关阅读:
    Echars折线配置详解
    Echarts中太阳图(Sunburst)的实例
    MongoDB shell 介绍
    js深度克隆对象
    js将有父子关系的数据转换成树形结构数据
    使用Mongoose类库实现简单的增删改查
    MongoDB可视化工具--Robo 3T 使用教程
    go语言之进阶篇并行和并发的区别与go语言并发优势
    go语言之进阶篇拷贝文件案例
    go语言之进阶篇借助bufio实现按行读取内容
  • 原文地址:https://www.cnblogs.com/lonelyshy/p/9720599.html
Copyright © 2011-2022 走看看