如何构建基于python异步的协同程序?

2024-06-01 21:44:46 发布

您现在位置:Python中文网/ 问答频道 /正文

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

在看异步睡眠实现他们这样做,调用循环稍后返回,而不是一个“真正的”睡眠

我已经来了,但它仍然不起作用。你知道吗

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))

目前,我得到的结果正是如何要求他们从,并希望更容易的计算第一。你知道吗


Tags: importloopasynciotaskbasereturnmydef