Geventにスレッドプールオブジェクトがあることに気付きました。 スレッドプールをいつ使用するのか、通常のプールをいつ使うべきか私に説明する人はいますか? gevent.threadpoolとgevent.poolの違いは何ですか?Geventでスレッドプールを使用する場合
11
A
答えて
9
pythonコードを実行すると時間がかかります(秒)とピンクコードのスイープが発生しません。 (ネットワーキングなし)他のすべてのgreenlets/geventジョブは「飢え」し、計算時間がなく、アプリケーションがハングするように見えます。
この「重い」タスクをスレッドプールに入れると、スレッド実行によって他のグリーンレットが飢えていないことが確認されます。しかし、あなたのコードがCライブラリに多くの時間を費やしても効果がないと思う。以下の例は、の例です。この例では、gevent.sleepではなくブロックするtime.sleepを使用しています。
TIP: あなたはちょうどループ内gevent.sleep(0)に置くことができるよりも実行に時間がかかりループを持っている場合。他のすべての牧草地では、実行する機会があります。 gevent .sleepは(0)あなたの低速ループに必ず他のgreenletsが餓死しませんようになりますし、アプリケーションが応答
import time
import gevent
from gevent.threadpool import ThreadPool
pool = ThreadPool(3)
start = time.time()
for _ in xrange(4):
pool.spawn(time.sleep, 1)
gevent.wait()
delay = time.time() - start
print 'Running "time.sleep(1)" 4 times with 3 threads. Should take about 2 seconds: %.3fs' % delay
関連する問題
- 1. geventでPyQtを使用する
- 2. プロセッサ使用率が高い場合のWCFおよびスレッドプールの応答性
- 3. ハスケルでハムズを使用する場合Yesodなしの場合
- 4. ASP.NETでJavaScriptを使用する場合
- 5. iPhoneでOpenGlを使用する場合
- 6. JSONでリストを使用する場合
- 7. Railty - 使用する場合
- 8. 目的Cコンベンション:使用する場合と使用する場合
- 9. HTML5モバイルアプリ - 単にUIWebViewを使用する場合、PhoneGapを使用する場合はいつですか?
- 10. Silverlightでエンティティを使用してLINQを結合する場合
- 11. スレッドプール(.NET、IIS6)を使用したディレクトリアクセス
- 12. スレッドプールを使用したBoostライブラリ
- 13. solを使用する場合のOOM
- 14. IModelBinderとDefaultModelBinderを使用する場合
- 15. SemanticModel.GetSymbolInfoとSemanticModel.GetDeclaredSymbolを使用する場合
- 16. getXメソッドを使用する場合
- 17. C#/ C++を使用する場合
- 18. PHP:CURLを使用する場合のセキュリティ?
- 19. メソッドとオブジェクトを使用する場合
- 20. トレップを使用する場合
- 21. parseIntを使用する場合
- 22. TaskEx.RunとTaskEx.RunExを使用する場合
- 23. Magento - Mage :: getResourceModelを使用する場合
- 24. Javascriptプロトタイプを使用する場合
- 25. Freebaseを使用する場合
- 26. awaitキーワードを使用する場合
- 27. HTTPプロキシを使用する場合
- 28. MySQLを使用する場合
- 29. getparent()を使用する場合
- 30. _changed?メソッドcounter_cacheを使用する場合
を表示されます「しかし、私はあなたのコードがACライブラリに多くの時間を費やしている場合、それは持っていると考えています効果なし "あなたは確かですか?あなたはC拡張や 'ctypes'を参照していますか? GILを(手動でCの拡張モジュールで、あるいは 'ctypes'で自動的に)リリースすれば、アプリケーションはThreadPoolから恩恵を受けるでしょうか? – MariusSiuram
はい。 "GILをリリースすれば"正確に。私はすべてのC libaryからそれを理解する時間がありません... – Stephan