43 lines
1.4 KiB
Python
43 lines
1.4 KiB
Python
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
|