Python并发编程


串行、并行与并发的区别

 串行(serial):一个CPU上,按顺序完成多个任务

并行(parallelism):指的是任务数小于等于CPU核数,即任务真的是一起执行

并发(concurrency)一个CPU采用时间片管理方式,交替的处理多个任务。一般是任务数多于CPU核数,通过操作系统的各种任务调度算法,实现用多个任务“一起”执行(实际上总有一些任务不在执行,因为切换任务的速度相当快,看上去一起执行而已)

进程、线程、协程的区别

进程相当于一条生产线,线程相当于生产线上的工人。一条生产线可以由多个工人。如果生产线上有工人闲着,那么就让他去做其他的事情,这就是协程。

  •  线程是程序执行的最小单位,而进程是操作系统分配资源的最小单位;
  • 一个进程由一个或多个线程组成,线程是一个进程中代码的不同执行路线;
  • 进程之间相互独立,但同一个进程下的各个线程之间共享程序的内存空间(包括代码段、数据集、堆等)及一些进程级的资源,某进程内的线程在其他进程不可见;
  • 调度和切换。线程上下文切换比进程上下文切换要快得多。
  • 进程(Process):拥有自己独立的堆和栈,既不共享堆,也不共享栈,进程由操作系统调度;进程切换需要的资源很大,效率低。
  • 线程(Thread):拥有自己独立的栈和共享的堆。标准线程由操作系统调度;线程切换需要的资源一般,效率一般。
  • 协程(Coroutine):拥有自己独立的栈和共享的堆,协程由程序员在协程的代码里面调度;协程切换任务资源很小,效率高。

进程

        是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。对于操作系统来说,一个任务就是一个进程。

线程

        是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。

协程

        也叫做纤程,是一种在线程中,比线程更加轻量级的存在,由程序员自己写程序来管理。当出现IO阻塞时,CPU一直等待IO返回,处于空转状态。这时候用协程可以执行其他任务。当IO返回结果后,再回来处理数据。充分利用了IO等待的时间,提高了效率。

并发编程解决方案:

多任务的实现有三种方式:

  • 多进程模式。启动多个进程,每个进程虽然只有一个线程,但多个进程可以一块执行多个任务
  • 多线程模式。启动一个进程,在一个进程内启动多个线程,这样,多个线程也可以一块执行多个任务
  • 多进程+多线程模式。启动多个进程,每个进程再启动多个线程,这样同时执行的任务就更多了,当让这种模型更复杂。

同步和异步介绍

        同步和异步强调的时消息通信机制。(synchronous communication / asynchronous communication)

        同步(synchronous):A调用B,等待B返回结果后,A继续执行。

        异步(asynchronous):A调用B,A继续执行,不等待B返回结果;B有结果了通知A,A再做处理。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python并发编程是指使用Python编写并行执行的程序。它允许多个任务同时执行,提高程序的效率。在Python中,有多种方法可以实现并发编程,其中包括多线程、多进程和异步编程。多线程是指在一个程序中同时运行多个线程,每个线程执行一个任务。多进程是指在一个程序中同时运行多个进程,每个进程执行一个任务。异步编程是指通过回调函数或协程来实现并发执行任务的方式。这些方法可以根据需求选择合适的方式来进行并发编程并提高程序的性能。其中,学习Python并发编程推荐在Linux上学习,因为Linux系统对于进程之间的通信有较好的支持,而Mac系统的核心也是Linux,所以Linux上的任何Python代码在Mac上都是可行的。官方文档提供了有关Python并发编程的详细信息,可以在https://docs.python.org/3/library/multiprocessing.html进行查阅。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Python笔记.docx](https://download.csdn.net/download/bxy0806/88235414)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [深入浅出讲解Python并发编程](https://blog.csdn.net/wanger5354/article/details/122016057)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [python并发编程](https://blog.csdn.net/weixin_43915382/article/details/122003007)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值