如何构建python asyncio基本协程?

时间:2019-03-31 10:51:27

标签: python python-asyncio coroutine

创建一个可以调用其他协程的协程很容易,但是例如,如果我要创建一个不会阻塞的协程,我该怎么做?我应该启动一个执行该计算的线程,然后以某种方式捕获回调吗?

看看asyncio.sleep的实现,他们执行调用循环以按时返回的方式,而不是“真正的”睡眠方式

我来了,但是它仍然没有用。

import asyncio
import concurrent.futures


def inner_task(num_1, num_2):
    return num_1 ** num_2


async def exp_coroutine(num_1, num_2):

    executor = concurrent.futures.ProcessPoolExecutor()
    return await loop.run_in_executor(executor, inner_task, num_1, num_2)


async def my_base_coroutine(num_1, num_2):
    results = await exp_coroutine(num_1, num_2)
    print(results)
    return results


loop = asyncio.get_event_loop()
loop.create_task(my_base_coroutine(23, 876))
loop.create_task(my_base_coroutine(23, 1))
loop.create_task(my_base_coroutine(23, 35))

tasks = asyncio.Task.all_tasks()
loop.run_until_complete(asyncio.gather(*tasks))

目前,我正在准确地获得结果,并希望首先进行更简单的计算。

0 个答案:

没有答案