は別のコルーチンを呼び出すコルーチンを考えてみましょう。 bar
が通常の機能の場合、このコードが適切な処理を行うためには、何をする必要がありますか(つまり、bar
に電話をかける必要があります)?コルーチンが期待されるところで、どのように通常の関数を呼び出しますか? <code>bar</code>がコルーチンである場合、これは正常に動作します</p> <pre><code>async def foo(bar): result = await bar() return result </code></pre> <p>:
コルーチンをasync def
で定義することは、非同期なことが全くない場合(つまり、決してawait
を使用しない場合)でも完全に可能です。 しかし、foo
のコードの中に通常の関数bar
をラップ/修正/コールする方法を質問すると、bar
が待つことができます。
これは動作するようです。興味深いことに、 'asyncio.coroutine(normal_function)()'はジェネレータであり、 'a_coroutine_function()'はコルーチンです。 – DanielSank
これはTaskオブジェクトのように返すジェネレータオブジェクトを扱う方法がありますか? 'Task.done()'を呼び出し、それがまだ実行中かどうかを確認しますか? – Dagrooms