Питон спит, не вмешиваясь в сценарий?
Эй, мне нужно знать, как спать в Python, не вмешиваясь в текущий скрипт. Я пробовал использовать time.sleep()
, но это заставляет весь сценарий спать.
Как например
import time
def func1():
func2()
print("Do stuff here")
def func2():
time.sleep(10)
print("Do more stuff here")
Func1()
Я хочу, чтобы он немедленно напечатал Do stuff здесь, затем подождите 10 секунд и напечатайте Do more stuff здесь.3 ответа:
Интерпретируя ваше описание буквально, Вам нужно поставить оператор print перед вызовом
Тем не менее, я предполагаю, что вы действительно хотите, чтобыfunc2()
.func2()
к фоновой задаче, которая позволяетfunc1()
немедленно вернуться и не ждать, покаfunc2()
завершит ее выполнение. Для этого необходимо создать поток для запускаfunc2()
.import time import threading def func1(): t = threading.Thread(target=func2) t.start() print("Do stuff here") def func2(): time.sleep(10) print("Do more stuff here") func1() print("func1 has returned")
Вы могли бы использовать
threading.Timer
:from __future__ import print_function from threading import Timer def func1(): func2() print("Do stuff here") def func2(): Timer(10, print, ["Do more stuff here"]).start() func1()
Но, как уже указывал @unholysampler , может быть, лучше просто написать:
import time def func1(): print("Do stuff here") func2() def func2(): time.sleep(10) print("Do more stuff here") func1()