Я хочу, чтобы он запустил первую строку print 1 , затем подождал 1 секунду, чтобы запустить вторую команду print 2 и т. Д.

Псевдокод:

print 1
wait(1 seconds)
print 2
wait(0.45 seconds)
print 3
wait(3 seconds)
print 4
15
rectangletangle 25 Июл 2010 в 06:37

3 ответа

Лучший ответ

time.sleep(seconds)

import time

print 1
time.sleep(1)
print 2
time.sleep(0.45)
print 3
time.sleep(3)
print 4
47
NullUserException 14 Дек 2011 в 01:25
import time

# ...

time.sleep(1)
5
Kevin Little 25 Июл 2010 в 02:41

Все ответы предполагают, что вы хотите или можете вручную вставлять 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

Вы можете дополнительно настроить его в соответствии с вашими потребностями, возможно, также проверять содержимое строки, и что наиболее важно, это очень легко отключить и будет работать с любым кодом.

15
Anurag Uniyal 24 Фев 2012 в 15:12