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