python并发编程:并发编程中是选择多线程呢?还是多进程呢?还是多协程呢? |
您所在的位置:网站首页 › python中进程,线程,协程详细介绍 › python并发编程:并发编程中是选择多线程呢?还是多进程呢?还是多协程呢? |
❝
Python对并发编程的支持非常丰富,可以使用多线程、多进程、协程等方式进行并发编程。那么,应该如何选择呢? ❞ Python并发编程有哪些方式Python并发编程有三种方式: 多线程Thread 多进程Process 多协程Coroutine 什么是CPU密集型计算、IO密集型计算? CPU密集型(CPU-bound):CPU密集型也叫计算密集型,是指I/O在很短的时间就可以完成,CPU需要大量的计算和处理,特点是CPU占用率相当高。 例如: 压缩解压缩 加解密 正则表达式搜索 IO密集型(I/O bound)IO密集型指的是系统运作大部分的状态是CPU在等待IO的读写操作,CPU占用率依然较低。 例如: 文件处理程序 网络爬虫程序 读写数据库程序 多线程,多进程,多协程的对比python并发编程有三种方式: 「多线程Thread」、「多进程Process」、「多协程Coroutine」。 多线程Process(multiprocessing)「优点:」 相比进程,更轻量级,占用资源少「缺点:」 相比进程:多线程只能并发执行,不能利用多CPU(GIL) 相比协程:启动书面有限制,占用内存资源,有线程切换开销使用于:IO密集型计算、同时运行的任务数目要求不多。 多进程Thread(threading)「优点:」 可以利用多核CPU并行运算「缺点:」 占用资源最多、可以启动数目比线程少使用于:CPU密集型计算 多协程Coroutine(asyncio)「优点:」 内存开销最少。启动协程数目最多「缺点:」 支持的库有限制(aiohttp VS requests)、代码实现复杂适用于:IO密集型计算、需要超多任务运行、但有现成库支持的场景 怎样根据任务选择对应技术 如果是CPU密集型计算,使用多进程multiprocessing 如果是IO密集型计算,则考虑多线程或者多线程。 如果任务量大,有现成协程库支持,协程实现的复杂度可接受则首选协程,否则选线程。 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |