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

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 sys
import time import time
import dataclasses import dataclasses
from multiprocessing import Process,Queue from multiprocessing import Process,Queue,Value
from create_lambda_fun import search_lambda from create_lambda_fun import search_lambda
from create_signal_fun import moc_file_create from create_signal_fun import moc_file_create
@@ -114,8 +114,10 @@ class cmd_item_t:
cmd:str cmd:str
info: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()): while(not cmd_queue.empty()):
if(failed_num.value>0):
return
try: try:
cmd=cmd_queue.get_nowait() cmd=cmd_queue.get_nowait()
except Exception: except Exception:
@@ -125,6 +127,7 @@ def run_cmd(cmd_queue:Queue,cpu_index:int,return_list:Queue):
ret=os.system(cmd.cmd) ret=os.system(cmd.cmd)
if(ret): if(ret):
return_list.put((cpu_index,False)) return_list.put((cpu_index,False))
failed_num.value+=1
return return
return_list.put((cpu_index,True)) return_list.put((cpu_index,True))
@@ -134,8 +137,9 @@ def run_cmd_queue(cmd_queue:Queue,cpu_num:int=4):
return return
process_list = [] process_list = []
return_list=Queue() return_list=Queue()
failed_num=Value('i',0)
for i in range(cpu_num): 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() p.start()
process_list.append(p) process_list.append(p)
for i in process_list: for i in process_list:

View File

@@ -4,7 +4,7 @@ import sys
import time import time
import shutil import shutil
import dataclasses import dataclasses
from multiprocessing import Process,Queue from multiprocessing import Process,Queue,Value
@@ -14,7 +14,7 @@ OBJCPY="riscv64-unknown-elf-objcopy"
OBJDUMP="riscv64-unknown-elf-objdump" OBJDUMP="riscv64-unknown-elf-objdump"
CFLAG=[ CFLAG=[
"-march=rv32i", "-march=rv32i_zicsr",
"-mabi=ilp32", "-mabi=ilp32",
"-ffunction-sections", "-ffunction-sections",
"-fdata-sections", "-fdata-sections",
@@ -95,7 +95,6 @@ def tran_path(path:str):
# 判断是否需要重新生成 # 判断是否需要重新生成
def check_rebuild(dst:str,src:list): def check_rebuild(dst:str,src:list):
# print(f"src:{src}")
if(not os.path.exists(dst)): if(not os.path.exists(dst)):
return True return True
dst_time=os.path.getmtime(dst) dst_time=os.path.getmtime(dst)
@@ -105,9 +104,6 @@ def check_rebuild(dst:str,src:list):
src_time.sort() src_time.sort()
if(src_time[-1]>dst_time): if(src_time[-1]>dst_time):
return True return True
# for item in src_time:
# if(item>dst_time):
# return True
return False return False
@@ -125,7 +121,6 @@ def read_depend_files(name:str):
t+=line t+=line
t=t.split(':')[-1].strip() t=t.split(':')[-1].strip()
t=t.split(' ') t=t.split(' ')
# print(f"依赖列表{t}")
return t return t
@@ -134,8 +129,10 @@ class cmd_item_t:
cmd:str cmd:str
info: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()): while(not cmd_queue.empty()):
if(failed_num.value>0):
return
try: try:
cmd=cmd_queue.get_nowait() cmd=cmd_queue.get_nowait()
except Exception: except Exception:
@@ -145,6 +142,7 @@ def run_cmd(cmd_queue:Queue,cpu_index:int,return_list:Queue):
ret=os.system(cmd.cmd) ret=os.system(cmd.cmd)
if(ret): if(ret):
return_list.put((cpu_index,False)) return_list.put((cpu_index,False))
failed_num.value+=1
return return
return_list.put((cpu_index,True)) return_list.put((cpu_index,True))
@@ -154,8 +152,9 @@ def run_cmd_queue(cmd_queue:Queue,cpu_num:int=4):
return return
process_list = [] process_list = []
return_list=Queue() return_list=Queue()
failed_num=Value('i',0)
for i in range(cpu_num): 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() p.start()
process_list.append(p) process_list.append(p)
for i in process_list: for i in process_list: