質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

0回答

947閲覧

Python コンソールでアニメーションをするさいprintで食われる時間をひいて調整する方法

tasuren

総合スコア76

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

1クリップ

投稿2021/02/03 09:06

編集2021/02/03 12:09

コンソールでアニメーションを作っており、フレームごとにsleepで再生速度の調整を行っています。
ですが、printなどで時間が少し食われてしまいます。
なのでprintなどで食われる時間の分をsleepで待つ時間から引く必要があります。
ですがそのprintなどで食われる時間は変動するので固定だとどうしてもずれてしまいます。
なので以下のように毎回printでかかる時間を測定してみました。

python

1interval = 0.033 2 3start = time() 4print("アニメーション") 5time.sleep(interval-(time()-start))

ですが、timeに結構時間がかかってしまいました。
どうすればいいでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tiitoi

2021/02/03 09:10

time.time() の計測のほうに問題があるのでは? 計測する時点で実際にスリープしていた時間に+αの処理が発生するので、真に sleep していた時間は測ることはできませんし、time.time() 自体、計測精度がそこまで高くなかったと記憶してます。 https://qiita.com/takeopy/items/170d0e1ddbf02ef9fbb9
tasuren

2021/02/03 09:12

なるほど コンソールでアニメーションを作ろうとしているのですが、そこでsleepが遅延をおこしていると気づきました。 このことを書いて質問を編集しようと思います。
tiitoi

2021/02/03 09:19 編集

念の為確認ですが、スリープする時間からその他の処理にかかった時間は除いてますかね? 例えば、30FPSで動画を再生する場合、1フレームあたり33msということになりますが、描画に20msかかったとすると、スリープするのは33-20=13ms になりますが、その点は大丈夫ですか?
tasuren

2021/02/03 09:21

なるほど その計算をしていませんでした。 すみません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問