2016-05-24 6 views
0

私を許して、私は初心者です。私はいくつかの解決策を調査しました。しかし、それを理解して修正することはとても難しいです。 (あるいは、私の想像力に合った解決策はありませんか?)そして私はそれがUbuntu & Win7で動作することを願っています。タイムアウト機能が長すぎる場合

このような例があります。

import random,time 

def example(): 
    while random.randint(0,10) != 1: 
     time.sleep(1) 
    print "down" 

example() 

そして、私の想像力は()再び)(例を再実行し、その後、10秒かけて実行し、場合...例

です。 (そして、おそらく私は何か他のものをコード化することができる場所があります。私はTXTにタイムアウトイベントを記録したいのですが、その場所にコードをコード化することができます。) それ以外の場合は何もしないでください。

これは可能ですか?

答えて

1

をあなたは(それがexampleを実行します)メインスレッドを中断し、別のスレッドでウォッチドッグを実行することができます。

+0

ありがとうございました。それが私が望む解決策です。 – h8a2n5k23

0

あなたが達成したいことを完全に理解しているかどうかはわかりませんが、常にループしており、短くて予測可能なブロッキングコマンドが1つしかないので、ループが開始した時刻を保存して比較するだけです1回のループ反復ごとに1回現在の時刻に戻します。違いは、あなたの限界を超えている場合、あなたがやりたい:それは時間制限を超えた場合に

import random,time 
time_limit=10 

def example(): 
    time_start = time.time() # store current time (seconds since 1970) 
    while random.randint(0,10) != 1: 
     time.sleep(1) 
     if (time.time() >= time_start + time_limit): # compare with current time 
      print "canceled!" 
      break # break the while-loop 
    print "down" 

example() 
+0

OPの可能性は、おそらく制御できない* 'example'を変更せずにタイムアウト*を強制することを意味します。 – user4815162342

+0

ありがとうございます。 @ user4815162342が正しいです。^_^ – h8a2n5k23

関連する問題