Python 捕獲terminate信號優雅關閉進程


 

信號捕獲在window上測試沒有生效,在Linux上測試生效

 1 import multiprocessing
 2 import time
 3 import signal
 4 import os
 5 import random
 6 
 7 sid = 0   # 全局變量,進程之間的變量是否獨立測試
 8 
 9 def myhandler(signum, frame):
10     global sid
11     print(signum)
12     print(sid)
13     print("del del")
14     exit()
15 
16 def test():
17     global sid
18     signal.signal(signal.SIGTERM, myhandler) # 定義捕獲信號和關閉時的處理函數
19     counter = 0
20     sid = random.randint(0,100)
21     while True:
22         print(counter, sid)
23         counter +=1
24         time.sleep(1)
25 
26 
27 if __name__=="__main__":
28     p = multiprocessing.Process(target=test)
29     p.start()
30     p1 = multiprocessing.Process(target=test)
31     p1.start()
32     p1.join(5)
33     if p1.is_alive():
34         print(p1.pid)
35         print("Process Timeout, be Terminated !!!")
36         p1.terminate() # 發送關閉信號
37         p1.join()
38         p.terminate()
39         p.join()
40     print(sid)

 


免責聲明!

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



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