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