2015-09-27 29 views

Odpowiedz

56

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)