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()

 

posted @ 2018-09-28 20:07  lonelyshy  阅读(4020)  评论(0编辑  收藏  举报