异步编程不是多线程或多进程。 相反,它是并发编程,我们可以运行一个可能长时间运行的任务,并允许我们的程序在该任务仍在运行时响应其他任务,而不是等待完成。
对于异步编程,HTTP 请求操作或用户选择可能会花费大量时间,因此,允许其他任务在这些操作仍在执行时运行是明智的。
在 Python 中,要实现异步编程,我们可以将 async/await
特性与函数一起使用,但我们使用 lambda 函数来实现。 本文将讨论在 Python lambda 函数中使用 await 的可能性。
Python Lamda 中没有异步/等待 lambda
要在 Python 中进行异步编程,我们需要一个名为 asyncio 的内置高级包,它使用 async/await 语法来允许并发编程。
要创建异步操作,您可以使用 async 和 await 关键字。
import asyncio
async def main():
print("Action One")
await asyncio.sleep(1)
print("Action Two")
asyncio.run(main())
输出:
Action One
Action Two
我们将 async 关键字应用于 main()
函数,并将 await 关键字应用于 asyncio.sleep()
语句; 但是,我们如何通过 lambda 将其应用于匿名函数? 匿名函数或 lambda 函数是在没有名称的情况下定义的,并使用 lambda 关键字来实现。
假设您想从列表中删除不能被 3 整除的数字。我们可以使用采用另一个函数的 filter()
方法(高阶函数)。
因此,您可以使用 lambda 关键字来使用匿名函数,而不是定义您可能不会再次使用的函数绑定。
myNums = [1, 2, 3, 4, 5, 6, 7]
myNums = list(filter(lambda x: x%3 == 0, myNums))
print(myNums)
输出:
[3, 6]
但是,有没有办法将异步功能添加到 lambda 函数中? 简单回答是不。
Python 的开发人员表示,没有重要的用例可以证明为 lambda 添加异步语法是合理的。
此外,lambda 的命名并不是 lambda 函数的正确用法; 因此,很难将它与 lambda 函数一起使用。 此外,通过 lambda 函数传递异步函数将在同步函数中执行。