Задержки Python

Я хочу знать, как вызвать функцию после определенного времени. Я попробовал time.sleep (), но это останавливает целый сценарий. Я хочу, чтобы сценарий продолжился, но после??? secs вызывают функцию и запускают другой скрипт одновременно

34
задан drnessie 8 August 2010 в 08:09
поделиться

2 ответа

Посмотрите на threading.Timer. Он запускает вашу функцию в новом потоке.

from threading import Timer

def hello():
    print "hello, world"

t = Timer(30.0, hello)
t.start() # after 30 seconds, "hello, world" will be printed
61
ответ дан 27 November 2019 в 16:41
поделиться

Если вы хотите, чтобы функция вызывалась через некоторое время, а не останавливала ваш сценарий, вы по своей сути имеете дело с многопоточным кодом. Если вы хотите установить функцию для вызова и не беспокоиться об этом, вы должны либо явно использовать многопоточность - как em Mark Byers's answr, либо использовать фреймворк кодирования, который имеет основной цикл, который заботится о диспетчеризации функций для вас - например, twisted, qt, gtk, pyglet и многие другие. Любой из них потребует переписывания кода так, чтобы он работал из основного цикла этой платформы.

Это либо так, либо написание какого-то основного цикла из события, проверяющего себя в вашем коде - В общем, если единственное, что вам нужно, это вызовы одной функции, многопоточность. Таймер - это способ сделать это. Если вы хотите использовать эти синхронизированные вызовы для фактического зацикливания программы, как это обычно делается с помощью setTimeout javascript, вам лучше выбрать одну из платформ кодирования, которые я перечислил выше, и рефакторинг вашего кода, чтобы воспользоваться этим.

4
ответ дан 27 November 2019 в 16:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: