我一直在阅读有关python3中的asyncio模块,以及更广泛的关于python中的协程的内容,但我不明白asyncio是什么让asyncio成为如此伟大的工具。我有一种感觉,使用协程可以做的所有事情,都可以通过使用基于多处理模块(例如芹菜)的任务队列来做得更好。有没有协程比任务队列更好的用例?
发布于 2015-12-23 23:13:08
这不是一个恰当的答案,而是一系列无法放入评论中的提示:
,
multiprocessing模块(让我们也考虑一下threading )。假设您必须处理数百个套接字:您能用线程和进程生成数百个进程或threads?writev() --不是比多个write()s?更高效吗
发布于 2017-02-12 03:06:13
添加到上面的答案中:
如果手头的任务是I/O受限的,并且在共享数据上操作,那么协程和异步可能是可行的方法。
另一方面,如果您有数据不共享的CPU密集型任务,像Celery这样的多处理系统应该更好。
如果手头的任务是CPU和I/O的双重限制,并且不需要共享数据,我仍然会使用Celery.You可以使用来自Celery内部的异步I/O!
如果您有一个受CPU限制的任务,但需要共享数据,那么我现在看到的唯一可行的选择就是将共享数据保存在数据库中。最近已经有像pyparallel这样的尝试,但它们仍在进行中。
https://stackoverflow.com/questions/34437867
复制相似问题