Python имеет встроенный класс Timer
, который будет обрабатывать потоки для вас:
import threading
def after_2_minutes():
if process_still_running():
print "ALERT!!"
# start a timer in the background that waits 2 minutes
threading.Timer(2 * 60, after_2_minutes).start()
# start the process
foo.bar()
Gotchas: after_30_minutes
будет работать в отдельном потоке, поэтому, как и в любом потоке, вы должны убедиться, что его действия не мешают другим вашим потокам (хотя вы можете без проблем манипулировать простыми структурами данных из-за Глобальная блокировка интерпретатора в CPython).