15

最初の行のprint 1を実行してから、1 秒待って 2 番目のコマンド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 に答える