przebiegu współprogram wymaga pętli zdarzeń. Użyj asyncio()
library aby utworzyć:
import asyncio
loop = asyncio.get_event_loop()
loop.run_until_complete(foo())
loop.close()
Zobacz także Tasks and Coroutines chapter of the asyncio
documentation.
Należy jednak zauważyć, że time.sleep()
to , a nie - nieoceniony obiekt. Zwraca None
więc masz wyjątek po 1 sekundzie:
>>> loop.run_until_complete(foo())
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Users/mj/Development/Library/buildout.python/parts/opt/lib/python3.5/asyncio/base_events.py", line 342, in run_until_complete
return future.result()
File "/Users/mj/Development/Library/buildout.python/parts/opt/lib/python3.5/asyncio/futures.py", line 274, in result
raise self._exception
File "/Users/mj/Development/Library/buildout.python/parts/opt/lib/python3.5/asyncio/tasks.py", line 239, in _step
result = coro.send(value)
File "<stdin>", line 2, in foo
TypeError: object NoneType can't be used in 'await' expression
Należy użyć asyncio.sleep()
coroutine Zamiast:
async def foo():
await asyncio.sleep(1)