python并发编程:并发编程中是选择多线程呢?还是多进程呢?还是多协程呢?

您所在的位置:网站首页 python中进程,线程,协程详细介绍 python并发编程:并发编程中是选择多线程呢?还是多进程呢?还是多协程呢?

python并发编程:并发编程中是选择多线程呢?还是多进程呢?还是多协程呢?

2023-05-21 17:25| 来源: 网络整理| 查看: 265

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