1

function1、function2、function3 などの関数を含む Python スクリプトを 24 時間ごとに別のプロセス/スレッドとして実行するにはどうすればよいですか? だから、言って...

メイン アプリケーションは関数 1、関数 2 を実行します 関数 1 と関数 2 は、関数 1 がタスクを終了すると、メイン アプリケーションとは別のスレッドで実行時間の長いプロセスを実行し、メイン アプリケーションに完了したことを報告します。

メイン アプリケーションは、「Done with Function 1」を出力します。関数 2 がタスクを完了すると、完了したことをメイン アプリケーションに報告します。

機能 1 が終了してから 24 時間後... メイン アプリが再度実行します 機能 2 が終了してから 6 時間後... メイン アプリが再び機能を実行します

関数は同様のことを行うことに注意してください。ただし、データ ソースは異なるため、個別のアプリを使用して cron を実行することは望ましくありません。例は素晴らしいでしょう。

4

2 に答える 2

3

アプリケーション内で必要な場合alarm()は、開始するのに適した場所であり、ハンドラーfork()自体をオフにする必要があります。異なる間隔で異なる機能を同期する必要がある場合PriorityQueueは、アラームを 1 つしか維持できないため、優れています。docsに実際のalarm()例があります。

それ以外の場合は、おそらく関数ではなく別のアプリケーションを使用し、crontab.

于 2012-12-10T01:38:21.847 に答える
0

これを 1 時間ごとにスレッドを開始するアプリケーションとして設定するという苦労をする必要はありません。単純な cron ジョブ (または、MS ボックスを使用している場合は同様のもの) ではなく、各関数は「functionX で完了」をログ ファイルに書き込みます。

crontab は次のようになります。

0 0 * * * function1.py >> log1
0 0 * * * function2.py >> log2

スクリプトにシバンがある場合。そうでない場合は、「function1.py」を「python function1.py」に置き換えます。

于 2012-12-10T01:37:42.577 に答える