首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >asyncio和协程vs任务队列

asyncio和协程vs任务队列
EN

Stack Overflow用户
提问于 2015-12-23 22:31:06
回答 2查看 9.3K关注 0票数 26

我一直在阅读有关python3中的asyncio模块,以及更广泛的关于python中的协程的内容,但我不明白asyncio是什么让asyncio成为如此伟大的工具。我有一种感觉,使用协程可以做的所有事情,都可以通过使用基于多处理模块(例如芹菜)的任务队列来做得更好。有没有协程比任务队列更好的用例?

EN

回答 2

Stack Overflow用户

发布于 2015-12-23 23:13:08

这不是一个恰当的答案,而是一系列无法放入评论中的提示:

  • ,你提到了multiprocessing模块(让我们也考虑一下threading )。假设您必须处理数百个套接字:您能用线程和进程生成数百个进程或threads?
  • Again,吗?您如何处理对共享资源的并发访问?像locking?
  • Frameworks这样的机制的开销是多少,像芹菜一样也增加了一个重要的开销。你能用它来处理高流量web服务器上的每一个请求吗?顺便说一下,在这种情况下,谁负责处理套接字和连接(芹菜本身不能为您做这件事)?
  • 请务必阅读the rationale behind asyncio。这个基本原理(在其他方面)提到了一个系统调用:writev() --不是比多个write()s?

更高效吗

票数 24
EN

Stack Overflow用户

发布于 2017-02-12 03:06:13

添加到上面的答案中:

如果手头的任务是I/O受限的,并且在共享数据上操作,那么协程和异步可能是可行的方法。

另一方面,如果您有数据不共享的CPU密集型任务,像Celery这样的多处理系统应该更好。

如果手头的任务是CPU和I/O的双重限制,并且不需要共享数据,我仍然会使用Celery.You可以使用来自Celery内部的异步I/O!

如果您有一个受CPU限制的任务,但需要共享数据,那么我现在看到的唯一可行的选择就是将共享数据保存在数据库中。最近已经有像pyparallel这样的尝试,但它们仍在进行中。

票数 16
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34437867

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档