SimPy — библиотека для моделирования дискретно-событийных систем на языке Python, основанная на моделировании процессов с помощью генераторов. Она предоставляет средства для описания внешних событий и внутренних процессов системы, управления виртуальным временем и организации взаимодействий между компонентами модели. SimPy используется для имитации очередей, систем обслуживания, производственных линий и других процессов, где важна дискретность событий и управление ресурсами.
Библиотека реализует концепцию процессов как функций‑генераторов, которые могут приостанавливаться и возобновляться по таймаутам или по наступлению событий, что позволяет моделировать параллельное поведение в однопоточном исполнении. В SimPy имеются абстракции для представления ограниченных ресурсов, таких как серверы или рабочие места, а также инструменты для организации очередей и контроля доступа к ресурсам посредством запросов и освобождений. Поддерживается управление виртуальным временем симуляции и сбор статистики по событиям.
- Процессы: моделируются как генераторы Python, которые приостанавливаются с помощью специальных событий и возобновляются диспетчером симуляции.
 - События и таймауты: механизм ожидания событий и таймаутов позволяет синхронизировать процессы и моделировать задержки и интервал времени.
 - Ресурсы: примитивы для моделирования ограниченной пропускной способности — фиксированные ресурсы, контейнеры и хранение для моделирования очередей и запасов.
 - Запросы и освобождения: стандартный интерфейс для запроса доступа к ресурсу и освобождения его по завершении обслуживания.
 - Очереди и приоритеты: поддержка управления приоритетными запросами и упорядоченных очередей ожидания для ресурсов.
 - Событийная синхронизация: возможность объединять и ожидать нескольких событий, реакция на первое наступившее или на все одновременно.
 - Отладка и мониторинг: встроенные средства для отслеживания состояния процессов, ресурсов и накопления статистики по времени ожидания и загрузке.
 - Интеграция с Python: использует стандартные возможности языка (генераторы, исключения), легко комбинируется с другими библиотеками и кодом модели.
 - Расширяемость: гибкая архитектура позволяет реализовывать пользовательские примитивы ресурсов и политики обслуживания.
 - Применимость: подходит для академических задач, исследований в области теории массового обслуживания и инженерных задач по анализу производительности и пропускной способности.