コンソールでアニメーションを作っており、フレームごとにsleepで再生速度の調整を行っています。
ですが、printなどで時間が少し食われてしまいます。
なのでprintなどで食われる時間の分をsleepで待つ時間から引く必要があります。
ですがそのprintなどで食われる時間は変動するので固定だとどうしてもずれてしまいます。
なので以下のように毎回printでかかる時間を測定してみました。
python
1interval = 0.033 2 3start = time() 4print("アニメーション") 5time.sleep(interval-(time()-start))
ですが、timeに結構時間がかかってしまいました。
どうすればいいでしょうか?
time.time() の計測のほうに問題があるのでは?
計測する時点で実際にスリープしていた時間に+αの処理が発生するので、真に sleep していた時間は測ることはできませんし、time.time() 自体、計測精度がそこまで高くなかったと記憶してます。
https://qiita.com/takeopy/items/170d0e1ddbf02ef9fbb9
なるほど
コンソールでアニメーションを作ろうとしているのですが、そこでsleepが遅延をおこしていると気づきました。
このことを書いて質問を編集しようと思います。
念の為確認ですが、スリープする時間からその他の処理にかかった時間は除いてますかね?
例えば、30FPSで動画を再生する場合、1フレームあたり33msということになりますが、描画に20msかかったとすると、スリープするのは33-20=13ms になりますが、その点は大丈夫ですか?
なるほど
その計算をしていませんでした。
すみません。
あなたの回答
tips
プレビュー