2016-09-03 3 views
0

私はイベントを起動するためにtime()・を使いたいと思います。例はprint("test")に3秒間あります。そのために私はこれをしました:Q:Python time

from time import time, sleep 

from random import random 

t = time() 
n = 3 

print(n, time() - t) 

for i in range(100): 
    sleep(0.04) 
    print(time() - t) 
    if time() - t > n: 
     print("test") 
     break 

そしてそれは動作します!しかし、私の試合では、しばらくの間、動作しません...どうしてですか?私が正しく理解している場合、あなたが簡単なgameloopを実行し、3秒後にいくつかのテストコードを実行する方法がわからないようだ

+0

あなたは「(テスト「)は、すべて3秒」プリントを起動」とはどういう意味ですか?私は英語があなたの母国語ではないとあなたが知っていることを知っていますが、もっと具体的にしようと思うと思いますか? – Harrison

+1

ここではかなりの文脈が欠落しています。「あなたのゲーム」のイベントループを他の場所で使用していますか? –

+0

私は、あなたが望むように動作する例を見せてくれているので、あなたのゲームループで起こっている問題を本当に助けてくれるのではないかと心配しています。同じ問題を示す例を挙げてください(例のコードで同じゲームループを使用する必要があるかもしれません)! – Blckknght

答えて

0

、ここではいくつかの単純なアプローチです:あなたが達成したい場合は

from time import time, sleep 

from random import random 

start_time = time() 
n = 3 

while True: 
    elapsed_time = time() - start_time 
    sleep(0.04) 
    print(elapsed_time) 
    if elapsed_time > n: 
     print("test") 
     break 
0

3秒間の遅延期間中に何か他のものを使用するのではなく、ちょうどwhileループを回るのではなく、時間が遅延したスレッドを使用してみてください。たとえば、次のよう

import threading 
import time 

def afterThreeSec(): 
    print("test") 
    return 

t1 = threading.Timer(3, afterThreeSec) 
t1.setName('t1') 
t1.start() 

print ("main") 
time.sleep(1) 
print ("main") 
time.sleep(1) 
print ("main") 
time.sleep(1) 
print ("main") 
time.sleep(1) 
print ("main") 

は出力が得られます。

main 
main 
main 
test 
main 
main