import concurrent from argparse import Namespace from attack import attack_process from utils import read_config def create_configurations(config): # 基于配置文件生成配置列表 total_gpus = int(config['GPU']['total_gpus']) configurations = [] for i in range(total_gpus): conf_dict = { 'cuda': config['GPU']['cuda'], 'gpu': str(i), 'target_class': int(config['MODEL']['target_class']), 'popsize': int(config['MODEL']['pop_size']), 'magnitude_factor': float(config['MODEL']['magnitude_factor']), 'maxitr': int(config['MODEL']['max_itr']), 'run_tag': config['MODEL']['run_tag'], 'model': config['MODEL']['model'], 'normalize': config['MODEL']['normalize'], 'e': int(config['MODEL']['e']) } configurations.append(conf_dict) return configurations if __name__ == "__main__": config_file = read_config("run_parallel_config.ini") configurations = create_configurations(config_file) with concurrent.futures.ProcessPoolExecutor() as executor: futures = [] for config in configurations: arg = Namespace(**config) future = executor.submit(attack_process, arg) # attack_process(arg) futures.append(future) for future in concurrent.futures.as_completed(futures): # 处理结果,如果需要的话 pass