Я хочу знать, как вызвать функцию после определенного времени. Я попробовал time.sleep (), но это останавливает целый сценарий. Я хочу, чтобы сценарий продолжился, но после??? secs вызывают функцию и запускают другой скрипт одновременно
Посмотрите на 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
Если вы хотите, чтобы функция вызывалась через некоторое время, а не останавливала ваш сценарий, вы по своей сути имеете дело с многопоточным кодом. Если вы хотите установить функцию для вызова и не беспокоиться об этом, вы должны либо явно использовать многопоточность - как em Mark Byers's answr, либо использовать фреймворк кодирования, который имеет основной цикл, который заботится о диспетчеризации функций для вас - например, twisted, qt, gtk, pyglet и многие другие. Любой из них потребует переписывания кода так, чтобы он работал из основного цикла этой платформы.
Это либо так, либо написание какого-то основного цикла из события, проверяющего себя в вашем коде - В общем, если единственное, что вам нужно, это вызовы одной функции, многопоточность. Таймер - это способ сделать это. Если вы хотите использовать эти синхронизированные вызовы для фактического зацикливания программы, как это обычно делается с помощью setTimeout javascript, вам лучше выбрать одну из платформ кодирования, которые я перечислил выше, и рефакторинг вашего кода, чтобы воспользоваться этим.