タグ

関連タグで絞り込む (0)

  • 関連タグはありません

タグの絞り込みを解除

pythonとtimerに関するtar0_tのブックマーク (3)

  • Python- 一定間隔ごとのプログラムの実行

    今回、一定間隔ごと(10秒ごと、1分ごと)にプログラムを実行するコードを書こうとしてかなり悪戦苦闘したので、それをブログ記事にしようと思います。もともと作ろうとしていたのは、複数の仮想通貨取引所のAPIから仮想通貨の売買価格をとって、それをJSONなり、DBなりに保存しようとするものです。timeモジュールのtime.sleep関数を使えば楽じゃないかと思いますが、これを使うと「プログラミング時間+スリープ時間(time.sleep関数で指定した時間)」で実行されていくため、厳密な間隔での実行になりきらないという問題点があります。この問題を解決するのに、意外に時間がかかったというところです。で、この問題の解法として、今回threadingモジュールを利用しました。コードは以下になります。 import time, threading def timekeep(): #インターバル用関数 t

    Python- 一定間隔ごとのプログラムの実行
  • Pythonで一定間隔で処理をさせる - 鳥の巣箱

    pythonで、例えばある関数を1秒間隔で実行したい時、初心者が一番最初に思いつく方法として def task(): # 何らかの処理 def main(): while True: task() time.sleep(1) といった書き方がある。 この書き方でも”およそ1秒毎”には処理してくれる。 だが、task()の処理時間などにこの間隔は大きく依存してくる。 time.sleep(1)はOSのスケジューラーの精度にもよるけど、ほぼ1秒sleepしてくれるがtask()の実行時間などが考慮されてないわけで。 仮にtask()の実行時間に0.1秒かかるのであれば1.1秒の周期で実行されていることになる。 また、task()の内容が条件によって分岐したりする場合、処理時間が必ず一定ではない場合もある。 そうするともはや一定周期で動作しているとは言えないよね。っていう話です。 システムコール

    Pythonで一定間隔で処理をさせる - 鳥の巣箱
  • Python3で一定間隔で処理を行う - Qiita

    「一定間隔で」処理をしたいときにどうしたらいいのかちょっと迷ったのでメモ。 センサの読み出しとか、だいたい1秒間隔で呼び出せてればいい場合は、以下のような感じで書かれてることが多い気がする。 import time def task(): print(time.time()) while True: task() time.sleep(1) ただこれだと、 実行間隔 = task()の実行時間 + time.sleep()の呼び出しにかかる時間 + 1秒 になってしまう。 これだと精度云々の前に「一定間隔」ではない。 ロボットの制御とか音ゲー的なもので、正確に(と言ってもtimer.sleep()の精度と同じくOSのスケジューラの精度以上にはならないのだが)に100msec間隔で関数を呼び出したい。どうしたらいいのか。 システムコールとシグナルを使って、OSに一定間隔で呼び出してもらうこと

    Python3で一定間隔で処理を行う - Qiita
  • 1