Interrompendo o processo sem try except
Interrompendo um proccesso sem captura por try...except
try...except
Caso o modelo possua um comando de interrupção de processo, mas não exista nenhuma lógica de captura com o bloco try... except,
a simulação será finalizada com a mensagem de erro:
O SimPy cria, para cada processo, uma propriedade chamada defused
que permite contornar a paralisação. Assim, pode-se interromper um processo, sem que essa interrupção provoque estrago algum ao processamento do modelo. Para desativar a paralisação do modelo (e manter apenas a paralisação do processo), basta tornar a propriedade defused = True
:
Um exemplo bem prático: você está na sua rotina de exercícios matinais, quando... PIMBA:
O modelo anterior deve ser autoexplicativo: um processo forca
é interrompido pelo
Quando executado, o modelo fornece como resultado:
Conceitos desta seção
Conteúdo | Descrição |
| armazena o processo da função_processo na variável |
| interrompe o processo armazenado na variável |
| lógica |
Desafios
Desafio 13 Considere que existam dois tipos de paradas: uma do R2D2 e outra do canhão de combate. A parada do canhão de combate ocorre sempre depois de 25 horas de viagem (em quebra ou não) e seu reparo dura 2 horas. Contudo, para não perder tempo, a manutenção do canhão só é realizada quando o R2D2 quebra.
Desafio 14 Você não acha que pode viajar pelo espaço infinito sem encontrar alguns TIEs das forças imperiais, não é mesmo? Considere que a cada 25 horas, você se depara com um TIE imperial. O ataque dura 30 minutos e, se nesse tempo você não estiver com o canhão funcionando, a sua próxima viagem é para o encontro do mestre Yoda.
Dica: construa uma função
executaCombate
que controla todo o processo de combate. Você vai precisar também de uma variável global que informa se o X-Wing está ou não em combate.
Last updated