Задержки Python - PullRequest
       9

Задержки Python

32 голосов
/ 08 августа 2010

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

Ответы [ 3 ]

57 голосов
/ 08 августа 2010

Посмотрите на 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
4 голосов
/ 08 августа 2010

Если вы хотите, чтобы функция вызывалась через некоторое время и не останавливала ваш сценарий, вы по сути имеете дело с многопоточным кодом.Если вы хотите установить функцию, которая будет вызываться, и не беспокоиться об этом, вы должны либо явно использовать многопоточность - например, ответ Марка Байерса, либо использовать среду кодирования, которая имеет основной цикл, который заботится о распределении функций дляВы - как твист, qt, gtk, pyglet и многие другие.Любой из них потребует от вас переписать код так, чтобы он работал из основного цикла этого фреймворка.

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

0 голосов
/ 27 июля 2015
import threading

def time_demo():
  threading.Timer(5.0, time_demo()).start()

print 'Hello this is time demo function'
time_demo()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...