有子进程失败时停止所有子进程
This commit is contained in:
10
make.py
10
make.py
@@ -7,7 +7,7 @@ import os
|
||||
import sys
|
||||
import time
|
||||
import dataclasses
|
||||
from multiprocessing import Process,Queue
|
||||
from multiprocessing import Process,Queue,Value
|
||||
from create_lambda_fun import search_lambda
|
||||
from create_signal_fun import moc_file_create
|
||||
|
||||
@@ -114,8 +114,10 @@ class cmd_item_t:
|
||||
cmd:str
|
||||
info:str
|
||||
|
||||
def run_cmd(cmd_queue:Queue,cpu_index:int,return_list:Queue):
|
||||
def run_cmd(cmd_queue:Queue,cpu_index:int,return_list:Queue,failed_num):
|
||||
while(not cmd_queue.empty()):
|
||||
if(failed_num.value>0):
|
||||
return
|
||||
try:
|
||||
cmd=cmd_queue.get_nowait()
|
||||
except Exception:
|
||||
@@ -125,6 +127,7 @@ def run_cmd(cmd_queue:Queue,cpu_index:int,return_list:Queue):
|
||||
ret=os.system(cmd.cmd)
|
||||
if(ret):
|
||||
return_list.put((cpu_index,False))
|
||||
failed_num.value+=1
|
||||
return
|
||||
return_list.put((cpu_index,True))
|
||||
|
||||
@@ -134,8 +137,9 @@ def run_cmd_queue(cmd_queue:Queue,cpu_num:int=4):
|
||||
return
|
||||
process_list = []
|
||||
return_list=Queue()
|
||||
failed_num=Value('i',0)
|
||||
for i in range(cpu_num):
|
||||
p = Process(target=run_cmd,args=(cmd_queue,i,return_list,))
|
||||
p = Process(target=run_cmd,args=(cmd_queue,i,return_list,failed_num,))
|
||||
p.start()
|
||||
process_list.append(p)
|
||||
for i in process_list:
|
||||
|
Reference in New Issue
Block a user