2016-08-08 1 views
0

私は非同期プログラミングのためにPython asyncioを学んでいます。私は、イベントループがFutureオブジェクトを準備してから、適切なコルーチンを再開してawaitキーワードが発生した時点で実行を続行することを知っています。待望のリソースがいつ用意されているのか、asyncioのイベントループはどのように知っていますか?

これは、スリープ機能が何回かかるかを知っているためイベントループを知っているので、非常にわかりますネットワークに依存するもの(たとえば)待ち時間不明ですか?

リソースが準備されているかどうか、または何らかのソースからデータを収集するのにかかる時間は、どのようにしてイベントループが知ることができますか?

+0

asyncioは、いくつかのプロトコルを実装しています。それは接続を作成し、それを見て、何かが起こったときにあなたのコルーチンを起こしています。 https://docs.python.org/3/library/asyncio-protocol.html – deceze

+0

もう一度行く準備ができるまで待ち続けると思います。あなただけが待っているなら、準備が整うまで繰り返しチェックを続けます。 – shongololo

+0

参考文献:) – Dargor

答えて

2

リソースが準備されているかどうか、または何らかのソースからデータを収集するのに必要な時間は、どのようにして知ることができますか?

SelectorEventLoopに基づいて)デフォルトのイベントループを監視するために、すべてのリソースを追跡するためにselectorモジュールを使用して、新しいデータの準備ができたときに通知を受けます。 BaseSelector.selectwhere the magic happensです。

関連する問題