python —— 异步gevent, 阻塞yield, 协程 concurrent, 阻塞block
发布时间
阅读量:
阅读量
为什么要用异步?
这种网络应用常见于主要受限于I/O层面上的性能瓶颈,在优化I/O吞吐量方面相比提升文本解析效率具有更高的性价比。
虽然多进程在CPU处理方面具有优势,并未显现其应有的效果,在创建与调度进程中所花费的成本显著高于预期收益的情况下造成了一定的影响。相比之下,在单线程单进程中存在明显劣势的情况下,在并行计算资源分配上仍显示出一定的优势。一个不容忽视的问题在于它们都面临着难以解决的问题——即处理进程之间或线程之间的协作问题 ,因为这些程序通常在未加锁的情况下运行不安全或不可控。然而通过引入协程则完美地解决了这一协作难题,并由用户自主决定协程之间的调度顺序以实现最佳性能优化。
参考:https://zhuanlan.zhihu.com/p/25228075
一、异步:
异步I/O框架借助异步通信机制能够在单个线程内高效执行多个并行操作。由于Python受限于GIL(全局解释锁)机制,在真正意义上无法实现真正意义上的多线程运行;因此在实际应用中大量采用multiprocessing模块来模拟并行处理的效果,并发场景的操作较为复杂;需要特别注意进程之间的同步协调问题;然而采用协程模式取代传统的多线程与 multiprocessing方案,则是一个非常值得采纳的选择;因为它具备许多令人称道的功能:支持主动中断/退出机制、能够实现状态持久化
全部评论 (0)
还没有任何评论哟~
