UNIX デーモンのように動作するいくつかの小さなサービスを開発しています。
最初の実装は、ツイスト リアクターに依存していました。リアクター インスタンスは、サブプロセスの呼び出し後に停止することなく OS プロセスを存続させ、実行し続けるためのアーティファクトでした。
subprocess
最近、これらのモジュールの Twisted 依存関係を削除し、呼び出し後にプロセスを実行し続ける必要性を残しました。while True: time.sleep(.1)
"main()" メソッドの最後に' ' ステートメントを挿入すると、正常に動作します。
1 分間に最大 600 回のウェイクアップ イベントを考慮すると、このtime.sleep(.1)
呼び出しではパフォーマンスが無駄になっています。アプリケーションのパフォーマンスには良くありません。交換すれば
while True:
time.sleep(.1)
に
while True:
pass
非常に多くのCPU時間を消費します(i5の約1.7%、継続的に)。
CPU 時間の占有が少なく、次のオプションで応答性の高いパフォーマンスを備えた、より優れた、またはバランスの取れた代替ソリューションはありますか?
reactor.run()
と
while True:
time.sleep(.1)
stackoverflow と web で同様の回答と議論をいくつか見つけましたが、Python を考慮した明確な議論は見つかりませんでした。