我希望它运行第一行print 1然后等待 1 秒以运行第二个命令print 2等。
伪代码:
print 1
wait(1 seconds)
print 2
wait(0.45 seconds)
print 3
wait(3 seconds)
print 4
import time
print 1
time.sleep(1)
print 2
time.sleep(0.45)
print 3
time.sleep(3)
print 4
所有答案都假设您想要或可以time.sleep
在每行之后手动插入,但您可能想要一种自动化方式来为大量代码行执行此操作,例如考虑此代码
def func1():
print "func1 1",time.time()
print "func1 2",time.time()
def func2():
print "func2 1",time.time()
print "func2 2",time.time()
def main():
print 1,time.time()
print 2,time.time()
func1()
func2()
如果您想延迟每行的执行,您可以time.sleep
在每行之前手动插入,这很麻烦且容易出错,而不是您可以使用sys.settrace
在每行执行之前调用自己的函数,并且在该回调中您可以延迟执行,因此,无需在每个地方手动插入time.sleep
并乱扔代码,您就可以这样做
import sys
import time
def func1():
print "func1 1",time.time()
print "func1 2",time.time()
def func2():
print "func2 1",time.time()
print "func2 2",time.time()
def main():
print 1,time.time()
print 2,time.time()
func1()
func2()
def mytrace(frame, event, arg):
if event == "line":
time.sleep(1)
return mytrace
sys.settrace(mytrace)
main()
没有跟踪输出是:
1 1280032100.88
2 1280032100.88
func1 1 1280032100.88
func1 2 1280032100.88
func2 1 1280032100.88
func2 2 1280032100.88
跟踪输出为:
1 1280032131.27
2 1280032132.27
func1 1 1280032134.27
func1 2 1280032135.27
func2 1 1280032137.27
func2 2 1280032138.27
您可以根据需要进一步调整它,也可以检查行内容,最重要的是,这很容易禁用并且适用于任何代码。
import time
# ...
time.sleep(1)