3

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 を考慮した明確な議論は見つかりませんでした。

4

1 に答える 1

1

おそらく解決策は、このために標準ライブラリに入る予定だったモジュールを単純に使用することです。

https://pypi.python.org/pypi/python-daemon/

どうやら 3143 は延期されたようですが、pypi リンクは pep の実装へのものです。

于 2013-11-09T13:22:47.447 に答える