python:并发编程(二)

news/2024/12/23 20:58:11/

 前言

本文将和大家一起探讨python的并发编程,涉及到python的并发编程模块,先简单介绍这些模块。后续文章,我们再进行详细使用。你至少应该分别掌握多进程、多线程、多协程的并发模块的一个,也可以分别掌握他们中的多个。模块就像法宝,掌握越多,运用起来就各种爽歪歪。

本文为python并发编程的第二篇,上一篇文章地址如下:

python:并发编程(一)_Lion King的博客-CSDN博客

下一篇文章地址如下:

(暂无)

一、python内置并发模块

python的并发模块有很多,其中一些比较优秀的模块,被python纳入内置模块。如果我是python,我愿称这些模块最强,要不我不会内置。当然,除了这些模块,还有很多模块值得我们学习,因为他们比内置模块更好用。

1、multiprocessing

multiprocessing提供了进程相关的功能,包括进程的创建、启动、同步等操作。模块可以实现真正的并行计算,每个进程都有自己独立的解释器和GIL,适用于CPU密集型任务。

在Python中,可以使用multiprocessing模块提供的进程池(Pool)来实现进程池编程。进程池可以方便地创建和管理多个子进程,从而实现并行执行任务的目的。

2、threading

threading提供了线程相关的功能,包括线程的创建、启动、同步等操作。模块实现了基于线程的并发,但由于全局解释器锁(GIL)的存在,多线程并不能实现真正的并行执行,适用于I/O密集型任务。

threading没有线程池。

3、asyncio

asyncio提供了基于协程的异步编程框架。模块使用事件循环和协程来实现非阻塞的异步操作,适用于高性能的I/O密集型任务。

在Python中,并没有协程池这种概念,但asyncio确实有池。可以使用第三方库如asyncio来实现协程和事件循环,从而实现高效的异步编程。asyncio库提供了asyncio.Pool类,它允许创建一个用于协程池的对象,用于协程的调度和执行。

4、concurrent.futures

concurrent.futures提供了高级的并发编程接口,包括线程池和进程池。模块通过ThreadPoolExecutorProcessPoolExecutor类封装了线程和进程的管理,使并发编程更加简单和方便。

二、进程池和线程池的概念

当我们接触一些新概念的时候,每一篇文章都会做相应的补充,这样在理解上,容易达成一致。职位为什么不把这些汇总一起或者做成一个附录,是因为用到的时候来学习,更方便一下。不然,光是学习概念,就是一件漫长的事情,而且还不容易被理解。

1、进程池

进程池是一种并发编程的模式,它允许创建和管理一组预先初始化的进程,用于执行并行任务。进程池通常由一个主进程和多个工作进程组成。

主进程负责创建和管理进程池,以及分配任务给工作进程。工作进程则负责执行实际的任务,并将结果返回给主进程。通过使用进程池,可以减少重复创建和销毁进程的开销,并提高任务执行的效率。它具有如下特点:

(1)预先初始化:进程池在启动时会预先创建一定数量的工作进程,这些进程会一直保持运行状态,等待分配任务。

(2)任务分发:主进程将任务分发给工作进程,通常使用队列(如任务队列)来实现任务的调度和传递。

(3)并行执行:工作进程并行执行任务,每个进程独立运行,可以同时处理多个任务。

(4)进程复用:一旦工作进程完成了一个任务,它会返回到进程池中,准备接收下一个任务,而不是被销毁。

(5)进程管理:进程池负责管理工作进程的创建、销毁和资源分配,使得开发人员可以专注于任务的编写,而不必关注进程的细节。

2、线程池

进程池是一种并发编程的模式,概念与特点基本与进程池类似,我们应该学会举一反三。

三、内置并发模块的学习路线

1、

2、

3、


http://www.ppmy.cn/news/382616.html

相关文章

MySQL数据库概念、管理以及SQL语句的基本命令操作

MySQL数据库概念、管理以及SQL语句的基本命令操作 一、数据库概念1、数据库的组成:数据、表、数据库2、数据库类型3、数据库的管理系统(DBMS)4、数据库系统(DBS) 二、数据库系统发展史三、当今主流数据库四、关系型数据库五、MySQ…

局部聚集系数

最近在打一个图数据库算法的比赛,分到了计算局部聚集系数这道题,要求速度快,空间复杂度可以不首要考虑。这对我是一个全新的知识,用此博客记录我的学习历程。 搜了一圈视频教程,b站没有这块的知识,只有yout…

创建autotool项目

GNU Autotools是linux系统一套自动化编译工具,生成的项目可移植,通过configure && make即可生成目标程序。GNU Autotools组件有:autoscan, aclocal, autoconf, automake,autoheader等。 不用管这些工具的原理,只要知道他们…

Binder对象的流转(系统服务的调用过程、AIDL的使用过程)

零、Binder的传递 Android系统中,存在大量的 IPC 交互,同时也使用了大量的 Binder,那么Binder是怎么在各进程中进行对象的传递? 一、调用系统服务时,Binder的传递 回忆一下,Android系统的启动流程&#x…

仿神庙逃亡

跑酷游戏仿神庙逃亡 链接:https://pan.baidu.com/s/12Pj8KQl1eWKWDbWO3OxtZQ 提取码:283a

安卓手机软键盘弹起的问题

现如今很多API对于安卓系统,iOS系统有些会兼容,有些不兼容。就拿软键盘弹起的问题来说吧,如果一个系统上面有一个输入框,底部有个按钮(前提按钮用了position:fixed),当我用安卓手机点击输入框的时候,底部的…

安卓手机里能否安装钢琴键盘模拟器APP呢?

可以在手机里直接安装使用。对于我们模拟练习钢琴非常有用。首先我们先启动手机,然后进入手机里的应用市场,搜索【钢琴键盘模拟器】安装到手机桌面上。  然后我们点 击【钢琴键盘模拟器】的图标,进入可操作界面。这时候会制动跳转到手机横屏…

分享安卓手机里的钢琴键盘模拟器给大家

安卓手机里的钢琴键盘模拟器,对于我们模拟练习钢琴非常有用。我们先打开手机,然后启动手机桌面上的【钢琴键盘模拟器】今天就和大家分享一下。 点 击【钢琴键盘模拟器】的图标,进入可操作界面。这时候会制动跳转到手机横屏界面。我们可以看到…