私は最近 asyncio をいじっていますが、それがどのように機能するかについて直感をつかみ始めていますが、できていないことがあります。構造が間違っているからなのか、やろうとしていることが意味をなさない理由があるのか はわかりません。
要するに、私は降伏する asyncio.coroutine を反復処理できるようにしたいと考えています。たとえば、次のようなことができるようになりたいです。
@asyncio.coroutine
def countdown(n):
while n > 0:
yield from asyncio.sleep(1)
n = n - 1
yield n
@asyncio.coroutine
def do_work():
for n in countdown(5):
print(n)
loop.run_until_complete(do_work())
ただし、これは asyncio の腸から例外をスローします。私は他のことを試しましfor n in (yield from countdown(5)): ...
たが、それも同様に不透明なランタイム例外を与えます。
なぜあなたがこのようなことをしてはいけないのかすぐにはわかりませんが、何が起こっているのかを理解する能力の限界に達しています。
そう:
- これを行うことが可能である場合、どうすればそれを行うことができますか?
- それが不可能なら、なぜですか?
この質問が明確でない場合はお知らせください。