1

Python で while ループを構築して、何らかの条件 (関数) が変化するのを待つfooか、指定された時間の後にタイムアウトを与えたいと考えています。これが私がそれをコーディングする方法です

def wait_change():
  import time
  timeout = 10 # time out of 10 seconds for example

  # set initial time and initial variables
  start_time = time.time()
  current_time = 0
  start_state = foo()
  current_state = start_state

  while current_time<timeout and start_state==current_state:
    current_time = time.time()-start_time
    current_state = foo()

 if current_time<timeout:
   return None
 else:
   return current_state

この関数はうまく機能しますが、これが最適な方法であるかどうかはわかりません。重要なことは、何らかの状態をチェックしてそれを返し、タイムアウトの場合は呼び出し元の関数に通知することです (ここでは を返しますNone)。これは最良の実装ですか、それともこれを処理するためのより Pythonic な方法はありますか? 特に気になる

  • 関数を 2 回呼び出すfoo
  • 戻り値が適切である場合 (つまり、値または を返しますNone)
  • signalorの使用がthreadingより良いコードにつながるより有用である場合

ありがとう、アレックス

4

0 に答える 0