Python - 等待异步函数完成

本文详细介绍了Python中如何使用await关键字创建异步函数,以及利用asyncio.create_task创建任务来实现并发执行。通过示例解释了异步编程的基本原理,包括如何在异步函数间切换以提高CPU利用率,避免不必要的等待时间。
摘要由CSDN通过智能技术生成

本文介绍如何创建异步函数并使用 await 关键字中断进程。 我们还将学习如何在 Python 中使用任务而不是线程。


使用 await 关键字并创建一个异步函数

异步编程不是多线程; 它不是多处理而是并发编程。

我们不会讨论并发编程的整个思想和整个编码模式,但我们会讨论基本原理以及如何在 Python 中实现这些原理。

现在让我们看一个简单的例子; 我们有一个正在调用的 Func_1、Func_2 和 Func_3。

Func_1()
Func_2()
Func_3()

如果这些函数被异步调用,这意味着我们将调用 Func_1(),然后调用 Func_2()

Func_1() 返回时,我们只调用 Func_2(),当 Func_2() 返回时,我们将调用 Func_3()

如果我们使用多线程或多处理,那将与异步编程不同。 因为在多线程中,在这种情况下我们将定义三个线程,并且我们将同时运行所有这些函数。

或者,大致同时,我们将尝试同时运行它们,或者至少创造同时执行的假象。

但是,我们想做的是,比方说,Func_1() 做一些有成效的事情,然后它从数据库、API 请求一些数据,或者它只是为了等待而休眠。

如果发生这种情况,我们不想浪费 CPU 时间并开始执行 Func_2(),即使该函数尚未返回。 所以我们只能同时运行一个任务; 我们没有进行任何多处理或多线程。

但是,如果 Func_1() 正在睡眠、等待或无效率,那么我们可以利用这段时间开始执行 Func_2() 甚至 Func_3()。 要在Python中进行异步编程,我们必须导入一个名为asyncio的库。

由于我们不会将整个程序定义为异步,因此特定功能将是异步的; 我们需要使用 async 关键字来指定异步函数。

如果我们只有这个 Main_Func(),整个程序将是异步的,但我们将在下一个示例中添加其他函数。 在这个函数中,我们将使用两个 print() 函数。

并且,在这之间,我们要睡觉,但我们不会用 time.sleep(); 来睡眠。 我们将使用 asyncio.sleep()

我们需要在调用 asyncio.sleep() 之前使用await关键字,这意味着我们将等待第二个打印语句完成。 在完成之前,我们不会做任何其他事情。

要运行 Main_Func() 函数,我们需要使用 asyncio.run() ,并且在 run() 函数内部我们将传递 Main_Func() 函数。 我们必须调用 Main_Func() 函数; 我们不仅仅将其称为多线程。

import asyncio

async def Main_Func():
    print('Before waiting')
    await asyncio
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

迹忆客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值