Сохраните свой pid в файл;если файл уже существует, проверьте, что процесс, который оставил свой PID, все еще жив.(Это безопаснее, чем пытаться гарантировать, что всегда удалит файл: вы не можете).Полный процесс выглядит следующим образом:
Проверьте, существует ли файл контрольных точек.Если этого не произойдет, запишите свой PID в файл и продолжите вычисления.
Если файл существует: прочитайте PID и проверьте, действительно ли процесс еще жив.Лучший способ сделать это с помощью kill -0 (из python: os.kill), которое не мешает выполнению процесса, но завершается неудачей, если его не существует.Если процесс все еще выполняется, выйдите.В противном случае запишите свой PID в файл и т. Д.
Существует небольшая вероятность возникновения состояния гонки, но если ваш процесс перезапускается с нечастыми интервалами, это должно быть совершенно безвредным: ваш процесс всегда может выйти в пользузапущенный процесс, который завершается через секунду, так что имеет значение, если запущенный процесс удастся завершить первым?