Это только ответ на часть вашего вопроса, но, насколько я понимаю, когда вы создаете новый процесс, он обычно наследует все дескрипторы родительского процесса. Это включает в себя такие вещи, как открытые файлы и сокеты, которые вы слушаете.
В UNIX это побочный эффект использования 'fork', который дублирует текущий процесс и все его дескрипторы перед загрузкой нового исполняемого файла. В Windows это более явно, но Python все равно делает это, чтобы попытаться максимально согласовать поведение на разных платформах.
Опция close_fds, когда True закрывает все эти унаследованные дескрипторы после запуска подпроцесса, поэтому новый исполняемый файл начинается с чистого листа. Но если ваши подпроцессы запускаются по одному и завершаются по завершении, это не должно быть проблемой.