К сожалению, .terminate() не гарантирует завершение процесса. .terminate() шлет SIGTERM, но SIGTERM - "мягкий" способ завершения, и процесс его может проигнорировать. И в любом случае, SIGTERM берет время на "подумать" и разослать сигналы в родительский и дочерние процессы, если они есть. По уму бы сделать проверку на фактическое завершение по SIGTERM и в крайнем случае, если процесс не закрылся, убить жёстко через .kill() И только после этого вычислять время жизни процесса.
К сожалению, .terminate() не гарантирует завершение процесса.
.terminate() шлет SIGTERM, но SIGTERM - "мягкий" способ завершения, и процесс его может проигнорировать. И в любом случае, SIGTERM берет время на "подумать" и разослать сигналы в родительский и дочерние процессы, если они есть.
По уму бы сделать проверку на фактическое завершение по SIGTERM и в крайнем случае, если процесс не закрылся, убить жёстко через .kill()
И только после этого вычислять время жизни процесса.