一个类似芹菜的事件循环,异步且不再依赖
asyncloop的Python项目详细描述
一个类似芹菜的事件循环,具有'asyncio',无依赖项
它在单独的线程中运行asyncio事件循环,在循环中驱动本机协程,然后以异步方式返回未来。
依赖性
它需要Python3.5+。
安装
$ git clone https://github.com/dgkim5360/asyncloop.git $ cd asyncloop asyncloop$ python setup.py install
开始
import asyncio as aio from asyncloop import AsyncLoop # A simple job, which should be a native coroutine async def job_to_wait(sleep_sec): await aio.sleep(sleep_sec) return sleep_sec # A simple callback def callback(fut): if fut.cancelled(): print('CANCELLED:', fut) elif fut.done(): print('DONE:', fut) print('RESULT:', fut.result() # AsyncLoop starts aloop = AsyncLoop() # <AsyncLoop(Thread-##, initial)> aloop.start() # <AsyncLoop(Thread-##, started ##########)> # Submit a job and be free to work on # it returns an AsyncJob object, a simple wrapper of concurrent.Future ajob = aloop.submit(job_to_wait(10), callback) ajob # <AsyncJob at 0x####> # After 10 seconds the callback activated # DONE: <Future at 0x#### state=finished returned int> # RESULT: 10 # Get a result ret = ajob.result() # 10 # You MUST stop the aloop before exit or destroy aloop.stop() # <AsyncLoop(Thread-##, stopped ##########)>
到目前为止,仅此而已。