TLDR:アプリケーション開発者向けのasyncioの包括的または正式な説明(チュートリアル/ブック/プレゼンテーション/ ...)を探しています。Pythonのasyncioを理解/理解するためのリソース
私は、イベントループと先物/遅延/約束(主にJavaScriptのおかげで)をよく理解していますが、何とかしてPythonのasyncioの複雑さが私を混乱させています。 asyncioは、以前の実装(Twisted、Tornadoなど)との低レベルの互換性のために部分的に設計されていたため、別のスレッドで複数のイベントループが可能になっているため、
基本的な概念の包括的なウォークスルーはありません。そのため、official docsに加えて、articlesとpresentationsをウェブ上で相談しました。
しかし、アプリケーションレベルで何が関連しているのか、上記の選択肢について心配する必要がないということは必ずしも明確ではないため、私の理解は不明です。 (多くのリソースがツイストらに精通を想定しているように見える。)
私のための不確実性を誘導し、物事のいくつかの例:
- をこれまでのところ、私は唯一の
yield from
と組み合わせてasyncio.coroutine
を使用しましたが、this comparisonが示唆します私は再考する必要があります。 - サーバは、
loop.create_server(MyProtocol)
またはasyncio.start_server(my_connection_handler)
を使用して作成することができます。 - ループのライフサイクルを管理する上で適切な衛生管理は何ですか(
loop.run_forever()
の後にloop.close()
など)? - 私はまだ
Future
に加えてTask
が必要である理由をまだ理解していません。 - クラスコンストラクタをノンブロッキングにしたい場合はどうすればいいですか(無効なのは
yield from
です)。 - クラスクラスのgetterを非同期にする(つまり、
@property
とasyncio.coroutine
を組み合わせる)? - 特定の関数が非同期であるかどうかはどのようにして知ることができますか?たとえば、私は
StreamWriter.write
がノンブロッキングであると期待していますが、実際にそうであるかどうかはわかりません。
私はこれらの特定の質問に対する回答を求めていませんが、私は概念レベルでどのように苦労しているかを示しています。
です。 しかし、私は多分asyncioに関する特定の質問に答えることができます。 –
ありがとうございます。今、私は概念的なレベルで私の理解に役立つものではないので、私は個々の質問に上記を回すことが意味があるかどうかはわかりません。おそらく私はそれを考えすぎているので、それを考慮する。 – AnC