私はNode.jsから来ています。 https://github.com/caolan/async イベントループをブロックすることなく、配列を介して非同期的に反復することができます。
Geventと同じことを達成することは、 sleep(0)
各ループ反復で?
dbクエリを解析するときや、(IO操作ではない)Pythonコードのブロック時間が無視できるときに、これは実際にWebサーバーにとって必要ですか?
回答:
回答№1は2Geventには gevent.idle()
その目的のためだけに電話してください(文書化されていないようです: http://www.gevent.org/gevent.html#useful-general-functions)。
しかし、ループでCPUの処理に時間がかかることが確実であれば、それを本当に並行作業者にオフロードする方が良いでしょう。 multiprocessing
あなたはGeventとうまく作業するために余分な措置を講じる必要があります(afaik)。
回答№2の場合は0
一般的には、
ただし、アレイ全体を処理するために必要なCPU時間が非常に長い場合、作成するレイテンシは許容されませんので、すべてを別のプロセス/タスクキューシステムにオフロードする必要があります。
あなたが眠る(0)たびに、オーバーヘッドを増やす(スイッチを入れ替える)ので、悪化させるようなものです。
CPUバウンドタスクとIOバウンドタスクは、同じプロセスでうまく融合しません。
代わりに、同時に多くの接続が必要ない場合は、geventをpre-forkサーバーに置き換えてください。