SimPy

Бесплатно
Открытый исходный код

Сайт: simpy.readthedocs.io

SimPy — библиотека для моделирования дискретно-событийных систем на языке Python, основанная на моделировании процессов с помощью генераторов. Она предоставляет средства для описания внешних событий и внутренних процессов системы, управления виртуальным временем и организации взаимодействий между компонентами модели. SimPy используется для имитации очередей, систем обслуживания, производственных линий и других процессов, где важна дискретность событий и управление ресурсами.

Библиотека реализует концепцию процессов как функций‑генераторов, которые могут приостанавливаться и возобновляться по таймаутам или по наступлению событий, что позволяет моделировать параллельное поведение в однопоточном исполнении. В SimPy имеются абстракции для представления ограниченных ресурсов, таких как серверы или рабочие места, а также инструменты для организации очередей и контроля доступа к ресурсам посредством запросов и освобождений. Поддерживается управление виртуальным временем симуляции и сбор статистики по событиям.

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