手动终止主进程时,同时终止子进程
先看一段代码
import redis
import multiprocessing
from signal import signal, SIGINT, SIG_IGN, siginterrupt, SIGTERM, SIGTSTP
def devide():
#分割日志
devideProcess = multiprocessing.Process(target = devideLog.devideLog)
devideProcess.start()
global dnsLogProcess
dnsLogProcess = [devideProcess]
#接收到终止信号 (ctrl+c)时运行 destroyPro函数
signal(SIGINT, destroyPro)
num = 0
for file in dnsDevideFile:
conRedis = connectRedis()
processName = file.split('/').pop().split('.')[0]
dnsLogProcess.append(
multiprocessing.Process(target = devideLog.operateDnsLog,name = processName, args = (file,conRedis,processName))
)
dnsLogProcess[num].start()
num += 1
# 销毁所有子进程
def destroyPro(signal, handler):
for p in dnsLogProcess:
p.terminate()