Чтобы ответить на конкретные вопросы.
«Использую ли я пакет multiprocessing
или subprocess
для запуска нового процесса?»
Использование multiprocessing
«Как получить легкий доступ к данным моделирования из процесса графического интерфейса?»
У вас нет доступа к объектам процессов моделирования, если вы об этом спрашиваете. Моделирование - это отдельный процесс. Вы можете запустить его, остановить его и - что самое важное - отправлять запросы через очередь команд, поступающих в симулятор.
«Пользователь должен иметь возможность легко и плавно просматривать временную шкалу симуляции. Как это можно сделать?»
Это просто дизайн. Один процесс, несколько процессов, несколько потоков никак не влияют на этот вопрос.
Каждое моделирование должно иметь некоторые параметры, оно должно начинаться, оно должно создавать журнал (или график). Это должно быть сделано независимо от того, какую библиотеку вы используете для запуска и остановки симуляции.
Вывод из симуляции, который вводится в ваш графический интерфейс, может быть выполнен миллионами способов.
База данных. Временная шкала моделирования может быть вставлена в базу данных SQLite и опрошена GUI. Это не очень хорошо работает, потому что SQLite не имеет действительно умной блокировки. Но это работает.
Файл. Временная шкала моделирования записывается в файл. Графический интерфейс читает файл. Это работает очень, очень хорошо.
Запрос / ответ. Симуляция состоит из нескольких потоков, один из которых отменяет команды и отвечает, например, отправкой временной шкалы до текущего момента или остановкой симуляции или изменением параметров и перезапуском.