import time
def run_function(func_name, timeout):
start_time = time.time()
try:
func_name()
except Exception as e:
print(f"関数 {func_name.__name__} でエラーが発生しました: {e}")
return False
finally:
elapsed_time = time.time() - start_time
print(f"関数 {func_name.__name__} は {elapsed_time:.2f} 秒で実行されました")
return elapsed_time <= timeout
def main():
"""
メイン関数
"""
functions = [
(function_a, 10),
(function_b, 11),
(function_c, 3),
(function_d, 12),
]
# 処理済み関数を記録するためのリスト
executed_functions = []
while True:
# すべての関数を処理し終えた場合はループを終了
if len(functions) == len(executed_functions):
break
# 未処理の関数から順番に実行
for func_name, timeout in functions:
if func_name in executed_functions:
continue
# 関数を実行
if run_function(func_name, timeout):
# 正常に終了した場合は処理済みリストに追加
executed_functions.append(func_name)
else:
# タイムアウトした場合は、リストの先頭に移動
functions.insert(0, functions.pop(functions.index((func_name, timeout))))
def function_a():
time.sleep(10)
def function_b():
time.sleep(10)
def function_c():
time.sleep(10)
def function_d():
time.sleep(10)
if __name__ == "__main__":
main()
Bardと数回やり取りして作ったコードですが、悪くなかったので備忘録的に残しているだけです。


コメント