SimPy é um framework de simulação de eventos discretos baseado em Python, projetado para modelar componentes ativos como clientes, veículos ou agentes através de funções geradoras. Ele oferece uma variedade de recursos compartilhados para modelar pontos de congestionamento de capacidade limitada, como servidores, caixas de checkout e túneis. As simulações podem ser realizadas "o mais rápido possível", em tempo real (tempo de relógio) ou avançando manualmente pelos eventos.
Embora seja teoricamente possível realizar simulações contínuas com SimPy, ele não possui recursos específicos para isso. Por outro lado, SimPy pode ser excessivo para simulações com tamanho de passo fixo onde os processos não interagem entre si ou com recursos compartilhados.
Um exemplo curto que simula dois relógios marcando em intervalos de tempo diferentes pode ser visto abaixo:
import simpy
def clock(env, name, tick):
while True:
print(name, env.now)
yield env.timeout(tick)
env = simpy.Environment()
env.process(clock(env, 'fast', 0.5))
env.process(clock(env, 'slow', 1))
env.run(until=2)
A documentação do SimPy inclui um tutorial, vários guias explicando conceitos-chave, uma série de exemplos e a referência da API. SimPy é lançado sob a Licença MIT, e os desenvolvedores de modelos de simulação são encorajados a compartilhar suas técnicas de modelagem com a comunidade SimPy.
Para mais informações, há uma palestra introdutória que explica os conceitos do SimPy e fornece alguns exemplos: assista ao vídeo ou obtenha os slides. SimPy também foi reimplementado em outras linguagens de programação. Consulte a lista de portas para mais detalhes.