15

我希望它运行第一行print 1然后等待 1 秒以运行第二个命令print 2等。

伪代码:

print 1
wait(1 seconds)
print 2
wait(0.45 seconds)
print 3
wait(3 seconds)
print 4
4

3 回答 3

47

time.sleep(seconds)

import time

print 1
time.sleep(1)
print 2
time.sleep(0.45)
print 3
time.sleep(3)
print 4
于 2010-07-25T02:39:05.100 回答
16

所有答案都假设您想要或可以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

您可以根据需要进一步调整它,也可以检查行内容,最重要的是,这很容易禁用并且适用于任何代码。

于 2010-07-25T04:33:55.460 回答
5
import time

# ...

time.sleep(1)
于 2010-07-25T02:41:22.120 回答