Pythonで一定時間以上処理を止めたい時の実装。
外部APIをfor文の中で何度も呼ぶときなどに、一定間隔を空けたいことがある。
でも必ず一定時間のsleepを入れてたらちょっと非効率。処理時間が一定間隔に満たなければsleepを入れたい。
例)Twitter APIへのリクエストの間隔を2秒以上空けたい。
import time
from datetime import datetime
def hoge():
start = datetime.now()
# ここでAPIリクエストやそれに付随する処理
hoge()
exec_time = (datetime.now() - start).microseconds
# 処理に2秒以上かかってなければ最短2秒になるようにsleepする
sleep_sec = float(2000 - exec_time) / 1000
if sleep_sec > 0:
time.sleep(sleep_sec)
もっといい書き方もありそう。