Meinのヒーロー和Gevent_XYM

 

個人のブログでXYM対応する章


meinheld + gunicorn +フラスコアーティファクトああ、小規模な研究はほとんど。

【コルーチン】

コルーチン:また、マイクロスレッドとして知られているコルーチンは、シュレッド。
このコルーチン「ハング」とメカニズムを「ウェイクアップ」は、本質的に、プロセスは、サブプロセスの数にカットしますです、私たちにフラットなイベントコールバックモデルを使用する方法を提供します。長所:コンテキスト、プロセスの共有プロセスは、何百万人-のコルーチンを作成することができます。

歩留まりのpythonとサードパーティのライブラリのgreenletは、コルーチンを達成することができます。
greenletは、HSにおけるハンドオーバ処理の直接制御を提供する単純な発電機(収率)、より柔軟です。

【GIL】

  1. セキュリティスレッドは、複数のスレッドが正常に実行するプログラムを実行すると、スレッドの安全性を確保するために、だけでなく、共有データのために確保するために、マルチスレッド環境である複数のスレッドがアクセスすることができますが、同時に一つだけのスレッドアクセス。各インタプリタプロセス、唯一つのスレッドのみ関連するロック、関連するリソースへのアクセスを得るために行うことができるが。それは、プロセスインタプリタが一つだけのスレッドを実行する場合は、見つけるのは簡単ですので、いくつかのスレッドが競争の間で、マルチスレッドの同時実行も、資源が存在しない場合には、不可能です。
  2. CPythonのスレッドライブラリは、オペレーティングシステムのネイティブスレッドをカプセル化しますが、全体としてCPythonのプロセスが同時に実行されているだけで培ったスレッドGILがあるだろうしながら、だから、他のスレッドはGILのリリースを待っている待機状態です。あなただけのシングルコアCPUを使用することができます。また、これは批判されてマルチスレッドのpython理由です。pythonの高い同時マルチプロセス+以上を推奨コルーチン。

[IO]マルチプレクサ

IO多重化は、1つ以上のコアIO条件を指すプロセスが見つかったら、読み取り準備ができている指定され、それはプロセスに通知します。
1.(スレッドセーフ)を選択:アレイはselect()システムコールを介して複数のファイル記述子にそれを監視するために、()リターンを選択すると、ファイル記述子のアレイは、カーネルフラグを変更できるようになりますプロセスは、その後の読み取りおよび書き込み操作に得られるように、これらのファイル記述子。
2.ポーリング(スレッドセーフ)を選択して、本質的にあまり差がないが、投票は、ファイル記述子の数に上限はありません
3ファイルディスクリプタ(スレッドセーフ):ファイルディスクリプタを同時にレベルトリガとエッジトリガをサポートすることができる(エッジトリガ、ちょうど記述子プロセスがちょうどのみ、我々は行動を取らない場合、)それは、再び語られることはありません、これはエッジ・トリガと呼ばれ、再びそれを言うために、準備ができなったファイル伝えるエッジトリガより高い性能を理論的にいくつかの、しかし、コードの実装は非常に複雑。

【】私のヒーロー

meinheld = greenlet + picoev(ネットワークアプリケーションのための小型、超高速イベントループ)https://github.com/kazuho/picoev

【】行商

行商= greenlet + python.monkey(libevent)

[非同期実装】

マルチプロセス+ coroutinue +コールバック(イベント駆動型を行うには多重IO)

【Picoevとlibevent]

meinheldとgeventは通常gunicornを使用して、非同期であってもよいが、より良いmeinheld gevent性能の評価よりも、しかしため、比較的小さなmeinheldサポートのことができます。picoevとlieventを使用して、それぞれ、以下meinheldおよびパフォーマンスギャップのためgevent主な理由を分析します。

【libevent】

メイン:タイマーイベント(nlogn)として、ヒープ(プライオリティキューイング)アルゴリズム、IOと信号が(リンクリストで実装)双方向キューを達成するために使用されています。

【picoev】

picoev:著者によれば、2つの主要な最適化があります。
1.主な考慮事項は、国連に(ファイル記述子)をfdとさ* X比較的小さな正の整数で表され、その情報fdは、全て、配列に格納されているので、簡単に見て、そのときにソケットの動作状態それはより速くなります。
2.第二の点は、リングバッファ(128)と、ビットベクトル断面実現ソースによって最適化タイマイベントのアルゴリズムが、メイン達成バッファの位置まで各時点相当し、各バッファを見ることができるということですビットベクトルFDを使用して面積が時間ハッシュマッピング複雑さの一種である(O(N))に対応するように、数値であり、n fdが格納されているバッファの数です。


---------------------
著者:xymscau
出典:CSDN
オリジナルます。https://blog.csdn.net/xymscau/article/details/50490728
免責事項:この記事作者オリジナルの記事は、再現し、ボーエンのリンクを添付してください!
コンテンツ分析:CSDN、CNBLOGのブログ記事は、キープラグ復刻しました

公開された238元の記事 ウォンの賞賛144 ビュー860 000 +

おすすめ

転載: blog.csdn.net/u011331731/article/details/104041041