具体的には、Eventlet の GreenPool クラスです。マルチパートアップロードの個々の部分として大きなファイルを S3 にアップロードするコードをいくつかテストしました。これまでに気づいたことは、eventlet を使用すると CPU 使用率が大幅に低下することです。スレッドを使用するだけでなく、Eventlet の他の長所と短所を探しています。ありがとう。
質問する
10159 次
1 に答える
12
基本的に、Eventlet のグリーン スレッドは、すべての実用的な目的において、OS スレッドの軽量な類似物と見なされます。長所:
- CPU、メモリ、およびシステムコールの観点から作成する方が安価 (0)
- 切り替えが安くなります。これは、各スレッドが積極的に GIL を取得しようとする Python 2.x で特に当てはまり、CPU を浪費します。
短所:
- 多くのグリーン スレッドが 1 つの OS スレッド内で動作するため、そのうちの 1 つのシステムコール (open(2) など) が OS スレッドをブロックすると、すべてのグリーン スレッドもブロックされるため、これは重要です。
- SMP なし (マルチ CPU/マルチコア); しかし、GIL では、これは Python の OS スレッドにも当てはまります。greenlet[1] を使用すると、この制限はより厳しくなります。これは、一部の C 拡張機能が GIL を解放して、他のグリーン スレッドを続行できるようにすることができないためです。
この回答も役に立つかもしれません: Is a greenthread equal to "real" thread
[1] Eventlet で使用される「スレッド化」ライブラリhttps://github.com/python-greenlet/greenlet
于 2013-05-01T07:10:10.770 に答える