嘿我需要知道如何在不干扰当前脚本的情况下在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秒并在这里打印更多的东西。
答案 0 :(得分:7)
从字面上解释您的描述,您需要在调用func2()
之前放置print语句。
但是,我猜你真正想要的是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")
答案 1 :(得分:6)
您可以使用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 already pointed out,最好只写:
import time
def func1():
print("Do stuff here")
func2()
def func2():
time.sleep(10)
print("Do more stuff here")
func1()
答案 2 :(得分:3)
如果您在命令行上运行脚本,请尝试使用-u
参数。它以无缓冲模式运行脚本并为我做了诀窍。
例如:
python -u my_script.py