有子进程失败时停止所有子进程

This commit is contained in:
2025-06-26 21:08:34 +08:00
parent f86099aaf5
commit 5bf41295cf
2 changed files with 15 additions and 12 deletions

10
make.py
View File

@@ -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: