#!/bin/bash set -e cd "$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)"/ # Set values from arguments with default values # NUM_ROUNDS="${1:-10}" NUM_CLIENT="${2:-3}" MODEL_NAME="${3:-"rf"}" PROBLEM_TYPE="${4:-"classification"}" TARGET_COL="${5:-"-1"}" EXP_ID="${6:-"0"}" DATA_PATH="${7:-"../data/train_dataset.csv"}" MODEL_PATH="${8:-"../models"}" echo "Starting server" python server.py --num-clients "${NUM_CLIENT}" --num-rounds "${NUM_ROUNDS}" --model-name "${MODEL_NAME}" --problem-type "${PROBLEM_TYPE}" --data-path "${DATA_PATH}" --target "${TARGET_COL}" --exp-id "${EXP_ID}" --model-path "${MODEL_PATH}" & sleep 3 # Sleep for 3s to give the server enough time to start for i in $(seq 0 $((NUM_CLIENT - 2))); do echo "Starting client $i" python client.py --node-id "${i}" --num-clients "${NUM_CLIENT}" --problem-type "${PROBLEM_TYPE}" --data-path "${DATA_PATH}" --target "${TARGET_COL}" & done # This will allow you to use CTRL+C to stop all background processes trap 'trap - SIGTERM && kill -- -$$' SIGINT SIGTERM # Wait for all background processes to complete wait