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
) signal
orの使用がthreading
より良いコードにつながるより有用である場合
ありがとう、アレックス