私はPython 3でasyncioモジュールについて、そしてより広範にはPythonでコルーチンを読んできましたが、asyncioをこのような素晴らしいツールにすることはできません。 私はコルーチンでできることはすべて、マルチプロセッシングモジュール(セロリなど)に基づいたタスクキューを使用することでより効果的だと感じています。 コルーチンがタスクキューより優れている用途はありますか?asyncioとcoroutines対タスクキュー
答えて
ない適切な答えが、コメントに収まることができませんでしたヒントのリスト:あなたがmultiprocessing
モジュールに言及している
(とのがあまりにも
threading
を考えてみましょう)。何百ものソケットやソケットを処理する必要があるとします。何百ものプロセスやスレッドを生成できますか?またスレッドとプロセス:共有リソースへの同時アクセスをどのように処理しますか?ロックのようなメカニズムのオーバーヘッドは何ですか?
セロリのようなフレームワークも重要なオーバーヘッドを追加します。あなたはそれを使用できますか?トラフィックが多いWebサーバー上でを毎回処理するために?ちなみに、そのシナリオでは、ソケットと接続を処理する責任は誰にありますか(セロリはその性質上、あなたのためにできません)?
必ずthe rationale behind asyncioをお読みください。その根拠(他のものの中でも)は、
writev()
というシステムコールに言及しています - 複数のwrite()
よりもはるかに効率的ではありませんか?上記の回答に追加
:手元のタスクはI/Oバウンドで、共有データ、コルーチンとasyncio上で動作する場合
はおそらく行く方法です。
一方、データが共有されていないCPUバインドタスクがある場合は、Celeryのようなマルチプロセッシングシステムが優れているはずです。
CPUとI/Oバウンドの両方でデータを共有する必要がない場合は、引き続きCeleryを使用します。セロリー内からの非同期I/Oを使用できます。
CPUにバインドされたタスクがありますが、データを共有する必要がある場合は、共有データをデータベースに保存するだけです。 pyparallel
のような最近の試みがありましたが、まだ進行中です。
- 1. タスクキューAPI:ETAとカウントダウン
- 2. Kotlin coroutines CalledFromWrongThreadException
- 3. タイムアウトのKotlin Coroutines
- 4. asyncio.wait(coroutines)invalid syntax
- 5. Kotlin Coroutinesの使用
- 6. Pyserialとasyncio
- 7. サービス:タスクキュー
- 8. メッセージキューとタスクキューの違い
- 9. Googleアプリケーションエンジンのタスクキューとユーザーサービス
- 10. asyncioのトラブルとアドバイス
- 11. スレッドとasyncio APIライブラリ
- 12. Unity(C#) - > Kotlin < - Coroutines
- 13. Google App Engineタスクキュー
- 14. タスクキュー完了コールバック
- 15. モニターファイルの変更 - AsyncioとFlask
- 16. AWS IoT Python SDKとasyncio
- 17. asyncio ioloopとpyzmqの使用
- 18. asyncioとの競合条件
- 19. Google appengine:タスクキューのパフォーマンス
- 20. タスクキューをプッシュ頻繁
- 21. GAE - 安全なデータコネクタとタスクキュー/ Cron
- 22. Google App Engine - タスクキューの名前とトランザクション
- 23. のPythonタスクキューの選択肢と
- 24. Kotlin Coroutinesによる同時S3ファイルアップロード
- 25. asyncio +マルチプロセッシング+ UNIX
- 26. Pythonでマルチスレッドasyncio
- 27. クラスタアプリケーションのasyncioログ
- 28. python3.5 asyncioプロトコル
- 29. lexicographicMode in asyncio bulkCmd
- 30. Python asyncioトレーニングエクササイズ