python异步和多线程的区别_Python:异步比线程有什么优势?

Asyncio是一个完全不同的世界,而且AFAIK这是python对node.js的回答,node.js从一开始就做这些事情。E、 g.关于异步状态的official python doc:Asynchronous programming is different than classical “sequential” programming

所以你需要决定是否要跳进兔子洞学习这个术语。它可能只有当你面对网络或磁盘相关的繁重任务时才有意义。如果是这样,例如this article声称python 3的异步速度可能比node.js快,并且接近Go的性能。

也就是说:我还没有使用异步,所以我不能对此进行真正的交流,但是我可以对你的问题中的几个句子进行评论:And all this async - await syntactic garbage all around the program is only to indicate that this method is able to yield control to message loop

据我所见,您已经初步设置了asyncio,但是所有调用的语法都比使用需要start()和join()的线程执行相同的操作要少,而且可能还需要使用is_alive()进行检查,并且要获取返回值,您需要首先设置一个共享对象。所以:不,asyncio只是看起来不同,但最终程序可能看起来比线程更干净。As I understand the only problem with this approach is that threads are expensive

不是真的。启动一个新的线程是非常便宜的,它的成本与在C或Java中启动一个“本机线程”的成本相同looks like this is the key difference: usual stacks are operating-system stacks, they are expensive, coroutine stacks are just a python structures, they are much cheaper. Is this my understanding correct?

不是真的。没有什么比创建操作系统级线程更好的了,它们很便宜。asyncio更擅长的是减少线程切换。因此,如果有许多并发线程等待网络或磁盘,那么asyncio可能会加快速度。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python中的异步函数和多线程都是用于处理并发执行的机制,但它们有以下几个区别: 1. 编程模型:异步函数使用的是异步编程模型,而多线程使用的是多线程编程模型。异步函数通过事件循环和协程来实现非阻塞的并发执行,而多线程则通过同时运行多个线程来实现并发执行。 2. 并发性:异步函数在单线程下实现并发执行,通过切换任务来实现非阻塞的并发。而多线程可以使用多个线程在多个CPU核心上同时执行,实现真正的并行执行。 3. 资源消耗:由于异步函数在单线程下运行,不需要额外的线程开销,因此在资源消耗上比多线程加轻量级。而多线程需要创建和管理多个线程,会占用多的系统资源。 4. 线程安全:由于异步函数在单线程下运行,不涉及共享资源的读写,因此天然具备线程安全性。而多线程需要考虑共享资源的同步和互斥访问,需要使用锁等同步机制来保证线程安全。 5. 编程复杂性:相对于多线程异步函数有简洁的编程模型,通过async/await关键字可以直观地编写异步代码。而多线程编程需要考虑线程之间的同步、数据共享等问题,编程复杂性相对较高。 总的来说,异步函数适用于IO密集型的并发任务,能够充分利用单线程的资源,提高程序的效率。而多线程适用于CPU密集型的并发任务,能够利用多个CPU核心进行真正的并行计算。选择使用异步函数还是多线程取决于具体的应用场景和需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值