1

cronジョブと同じように、10秒ごとに実行したいpythonプログラムがあります。時間間隔が不確かになるため、スリープをループで使用できません。私が今やっている方法は次のようなものです:

interval = 10.0
next = time.time() 

while True: 
    now = time.time() 
    if now < next: 
        time.sleep(next - now) 
        t = Thread(target=control_lights,)
        t.start()# start a thread
    next += interval 

contro_lights 関数を実行する新しいスレッドを生成します。問題は、時間の経過とともに Python プロセスの数が増え、メモリ/CPU を消費することです。これを行う良い方法はありますか?どうもありがとう

4

3 に答える 3

1

The Fat Controllerと呼ばれるプログラムを見てみましょう。これは CRON に似たスケジューラですが、より多くのオプションがあります。間隔は、前回の実行の終わりから (for ループのように) 測定することも、x 秒ごとに定期的に測定することもできます。この場合に特に便利なのは、プロセスの 1 つに x 秒以上かかる場合に何をすべきかを Fat Controller に指示できることです。

  • とにかく新しいインスタンスを実行します (指定された最大値まで並列プロセスを増やします)
  • 前のものが終わるのを待つ
  • 前のものを殺して、新しいものを始める

ドキュメントには、セットアップ方法に関する多くの情報があるはずです。

于 2013-01-13T08:35:53.193 に答える
1

このスクリプトにsupervisordまたはgodを使用してみてください。UNIX ライクなオペレーティング システム上で多数のプロセスを使用および制御するのは非常に簡単です。

于 2013-01-13T09:08:51.103 に答える
0

2 番目のパラメーターを「0/10」に設定するだけで、10 秒ごとに cron ジョブを実行できます。0、10、20などで実行されます

#run every 10 seconds from mon-fri, between 8-17
CronTrigger(day_of_week='mon-fri', hour='8-17', second='0/10')
于 2015-07-07T07:17:20.267 に答える