次のようなプログラムがあったとします。
WebAPIで3つのURLからのデータを繰り返し取得し続け、取得した結果がTrueだった場合、print_url関数でurlによって異なる処理を実行します。
python
1urls = [ 2 "https://api.example.com/data1", #以下の説明内では /data1 のように省略して書いています。 3 "https://api.example.com/data2", 4 "https://api.example.com/data3" 5 ] 6 7def print_url(url): 8 for i in range(20): 9 print(url) 10 sleep(5) 11 12while(True): 13 for url in urls: 14 flag:bool = get_data(url) #WebAPIでデータを取得する関数。 15 16 if flag == True: 17 hoge(url) 18 sleep(1)
この場合、3つの取得先のいずれかでTrueを受け取ると、そこからprint_url関数での約100秒間の処理を待った上でデータの取得が再開されます。
このプログラムを、次のように改良したいと思っています。
- 番号リストprint_url関数を実行中もデータの取得を続ける
- 新たに結果がTrueとなったURLがあった場合、現在の処理を中断し、新しい処理を実行する。
つまり、
- /data1がTrueとなったので、
print_url("https://api.exaple.com/data1")
を実行 - 2の実行中も/data2, /data3については取得を継続
- 2の実行中に /data2がTrueとなったので、2を中断し、
print_url("https://api.example.com/data2")
を実行する
といった動きを実現したいです。
拙い説明で申し訳ございません。ご教授のほどよろしくお願いたします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。