ホームページ  >  記事  >  バックエンド開発  >  Python のネットワーク プログラミング ライブラリ Gevent のインストールと使用のヒント

Python のネットワーク プログラミング ライブラリ Gevent のインストールと使用のヒント

WBOY
WBOYオリジナル
2016-07-06 13:29:442122ブラウズ

インストール(CentOSを例にします)
gevent は libevent と greenlet に依存します:
1. libeventをインストールします
libeventを直接yumインストール
次に、Python のインストールを構成します
2. easy_install をインストールします
(1)

リーリー

(2)

を使用する
リーリー

(3) easy_install を使用してコマンドが利用可能かどうかを確認し、利用できない場合は PATH にパスを追加します。
3.グリーンレットをインストールする
(1)

リーリー
(2)

リーリー

4.geventをインストールします

リーリー

ヒント
Gevent ライブラリは非常に高性能ですが、Python の GIL モデルのせいでスレッドがマルチコアのリソースを確保できないという事実に常に悩まされていました。
複数の Python プロセスを起動するマルチコア モードでは、lvs などのフロントエンドの負荷分散を追加する必要があり、少し面倒です。
マルチプロセッシング モジュールと os.fork により、2 つのプロセスがイベント コアに受け入れイベントを繰り返し登録するため、重複したファイル ハンドル例外が発生します。
単一プロセス監視と複数プロセス処理のモードでは、監視プロセスのリソースの割り当てが容易ではありません。1 つのコアを独立して割り当てる必要があるかどうか。個別に割り当てた場合、接続数が少ない場合にコアが無駄になります。割り当てられない場合、接続数が多い場合に CPU が頻繁にプロセスを切り替えます。
昨日、gevent がネットワーク モデルを複数のプロセスに簡単に分散して並列処理できることを発見しました。
秘密はgevent.fork()です。
私は gevent.fork が greenlet.spawn の単なるラッパーであることを当然のことだと思っていましたが、そうではないことがわかりました。 gevent.fork は os.fork を置き換えることができ、新しいプロセスを開始するだけでなく、並列処理のための基礎となるイベント処理も伝達します。

リーリー
Monkey.patch_os を追加した後、os.fork を gevent.fork に置き換えることができるため、マルチプロセッシング モジュールを通常どおり使用して並列処理の効果を実現できます。

リーリー

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。