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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM