Python中的并发编程(1)并发相关概念

简介: Python中的并发编程(1)并发相关概念

并发和并行

并发和并行

并发指逻辑上同时处理多件事情,并行指实际上同时做多件事情。

并发不一定通过并行实现,也可以通过多任务实现。例如:现代操作系统都可以同时执行多个任务,比如同时听歌和玩游戏,但歌曲播放和游戏运行并不一定是同时发生的,可能第1个CPU时间播放歌曲,然后第2个CPU时间执行游戏,这样交替执行。而并行是要求同时执行,即同一个CPU时间两个事情都发生,为了实现并行,必须能同时执行多个计算任务,如多核CPU或多个CPU。


并发和并行不互斥,并行是并发的一种实现方式。

Python实现并发的方式:进程、线程、协程

进程是程序运行时的一个实例。进程通信只能携带原始字节,因此Python的对象需要序列化为原始字节才能在进程间通信。

线程是一个进程中的执行单元。一个进程启动后,会创建主线程,并且可以调用操作系统API创建更多线程。一个进程内的线程可以共享内存空间,轻松共享数据。

GIL全称为全局解释器锁,每个Python解释器程序是一个进程,虽然可以在一个进程中启动多个线程,但同一时间只有一个Python线程可以持有GIL,其它线程无法执行。所以Python中无法通过线程实现并行计算。

协程是可以挂起自身并在以后恢复的函数。Python 协程通常在事件循环(也在同一个线程中)的监督下在单个线程中运行。协程支持协作式多任务处理:一个协程必须使用 yieldawait 关键字显式放弃控制权,另一个协程才可以并发(而非并行)开展工作。

参考:

  • 《流畅的Python》(第二版)第19章 Python并发模型
相关文章
|
21小时前
|
消息中间件 并行计算 Java
Python中的并发编程
本文介绍了Python中的并发编程,并具体介绍了线程、进程、协程的基本用法和案例。
Python中的并发编程
|
3天前
|
数据挖掘 程序员 调度
Python并发编程之协程与异步IO
传统的多线程和多进程模型在处理大规模并发时存在一些性能瓶颈和资源消耗问题。本文将重点介绍Python中基于协程和异步IO的并发编程方法,探讨其工作原理和实际应用,帮助开发者更好地理解并利用Python的并发编程能力。
|
7天前
|
Python
在Python中,解包参数列表和Lambda表达式是两个不同的概念
【6月更文挑战第19天】在Python中,解包参数允许将序列元素作为单独参数传递给函数,如`greet(*names_and_ages)`。而Lambda表达式用于创建匿名函数,如`lambda x, y: x + y`。两者可结合使用,如`max(*numbers)`找列表最大值,但过度使用lambda可能降低代码可读性。
13 3
|
9天前
|
数据挖掘 调度 开发者
Python并发编程的艺术:掌握线程、进程与协程的同步技巧
并发编程在Python中涵盖线程、进程和协程,用于优化IO操作和响应速度。`threading`模块支持线程,`multiprocessing`处理进程,而`asyncio`则用于协程。线程通过Lock和Condition Objects同步,进程使用Queue和Pipe通信。协程利用异步事件循环避免上下文切换。了解并发模型及同步技术是提升Python应用性能的关键。
34 5
|
8天前
|
数据采集 机器学习/深度学习 人工智能
Python基础第一篇(Python概念介绍)
Python基础第一篇(Python概念介绍)
|
11天前
|
Python
Python中的并发编程(7)异步编程
Python中的并发编程(7)异步编程
|
11天前
|
Python
Python中的并发编程(6)使用进程
Python中的并发编程(6)使用进程
|
2天前
|
C++ Python
Python闭包概念该怎么理解
Python闭包概念该怎么理解
|
10天前
|
Java 开发者 计算机视觉
探索Python中的并发编程:线程与协程
本文将深入探讨Python中的并发编程,重点比较线程和协程的工作机制、优缺点及其适用场景,帮助开发者在实际项目中做出更明智的选择。
|
3天前
|
机器学习/深度学习 人工智能 前端开发
Python中的模块化编程
【6月更文挑战第17天】Python模块化编程与软件架构设计的关键在于拆分任务到独立模块,提高代码的可维护性、可重用性和可扩展性。例如,学生管理系统可分解为录入、查询和删除模块。MVC和MVVM架构模式有助于组织代码,而微服务和函数式编程将在未来发展中扮演重要角色。通过示例代码,读者能学习如何实现这些概念,提升项目开发效率和质量。
148 57