Я думаю, что ваша идея в значительной степени именно то, что вы хотите. Например:
import time
def do_something():
with open("/tmp/current_time.txt", "w") as f:
f.write("The time is now " + time.ctime())
def run():
while True:
time.sleep(60)
do_something()
if __name__ == "__main__":
run()
Вызов time.sleep(60)
переведет вашу программу в спящий режим на 60 секунд. По истечении этого времени ОС разбудит вашу программу и запустит функцию do_something()
, а затем вернет ее в режим сна. Пока ваша программа спит, она ничего не делает очень эффективно. Это общий шаблон написания фоновых сервисов.
Чтобы действительно запустить это из командной строки, вы можете использовать &:
$ python background_test.py &
При этом все выходные данные скрипта будут отправляться на тот же терминал, с которого вы его запустили. Вы можете перенаправить вывод, чтобы избежать этого:
$ python background_test.py >stdout.txt 2>stderr.txt &