📝 Python并发教程

19篇技术文档
  Python并发教程

📅  最后修改于: 2020-11-08 08:39:35        🧑  作者: Mango

并发(自然现象)是同时发生两个或更多事件。对于专业人员来说,创建并发应用程序并充分利用计算机硬件是一项艰巨的任务。对于对本学科感兴趣或将其作为课程一部分的研究生,研究生和研究型学生,本教程将非常有用。读者可以是初学者或高级学习者。先决条件读者必须具有有关操作系统的并发,多处理,线程和进程等概念的基础知识。他/她还应该了解OS中使用的基本术语以及Python编程概念。...

  Python的并发性-简介

📅  最后修改于: 2020-11-08 08:40:12        🧑  作者: Mango

在本章中,我们将了解Python的并发概念,并了解不同的线程和进程。什么是并发?简单来说,并发是同时发生两个或更多事件。并发是自然现象,因为许多事件在任何给定时间同时发生。就编程而言,并发是指两个任务在执行中重叠。通过并发编程,可以提高应用程序和软件系统的性能,因为我们可以并发处理请求,而不必等待上一个请求完成。并发的历史回顾以下几点将使我们对并发进行简要的历史回顾-从铁路的概念并发与铁路概念密切...

  并发与并行

📅  最后修改于: 2020-11-08 08:41:09        🧑  作者: Mango

并发性和并行性都用于多线程程序,但是它们之间的相似性和区别存在很多混淆。在这方面的一个大问题:并发并行性与否?尽管这两个术语看起来非常相似,但是对以上问题的回答是“否”,但并发性和并行性并不相同。现在,如果它们不相同,那么它们之间的基本区别是什么?简而言之,并发处理从不同线程管理对共享状态的访问,另一方面,并行处理利用多个CPU或其内核来提高硬件性能。详细并发并发是两个任务在执行中重叠时。可能是应...

  系统和内存架构

📅  最后修改于: 2020-11-08 08:41:43        🧑  作者: Mango

设计程序或并发系统时,需要考虑不同的系统和内存体系结构样式。这是非常必要的,因为一种系统和内存样式可能适合一项任务,但可能容易出错,而无法执行另一项任务。支持并发的计算机系统架构1972年,迈克尔·弗林(Michael Flynn)给出了分类法,用于对计算机系统体系结构的不同样式进行分类。此分类法定义了以下四种不同样式-单指令流,单数据流(SISD)单指令流,多数据流(SIMD)多指令流,单数据流...

  Python的并发性-线程

📅  最后修改于: 2020-11-08 08:42:37        🧑  作者: Mango

在一般情况下,我们知道,线程是一个非常薄的绞合字符串通常是棉布或丝绸面料以及用于缝制衣服,这样的。在计算机编程领域中也使用相同的术语“线程”。现在,我们如何将用于缝纫衣服的线程与用于计算机编程的线程联系起来?这两个线程执行的角色在此处相似。在衣服中,线程将衣服合在一起,而在另一端,在计算机程序中,线程将计算机程序保持在一起,并允许程序一次执行顺序动作或一次执行多个动作。线程是操作系统中最小的执行单...

  线程的实现

📅  最后修改于: 2020-11-08 08:43:33        🧑  作者: Mango

在本章中,我们将学习如何在Python实现线程。线程实现的Python模块Python线程有时称为轻量级进程,因为线程占用的内存比进程少得多。线程允许一次执行多个任务。在Python,我们有以下两个模块在程序中实现线程-<_thread>模块<threading>模块这两个模块之间的主要区别在于<_thread>模块将线程视为函数,而<threading>模块将每个线程视为对象并以面向对象的方式实...

  同步线程

📅  最后修改于: 2020-11-08 08:44:26        🧑  作者: Mango

可以将线程同步定义为一种方法,借助该方法,我们可以确保两个或多个并发线程不会同时访问被称为关键节的程序段。另一方面,我们知道关键部分是程序中访问共享资源的部分。因此,我们可以说同步是通过同时访问资源来确保两个或更多线程不相互接口的过程。下图显示了四个线程试图同时访问程序的关键部分。为了更加清楚,假设有两个或更多线程试图同时在列表中添加对象。此操作无法导致成功结束,因为它会丢弃一个或所有对象,或者将...

  线程互通

📅  最后修改于: 2020-11-08 08:45:35        🧑  作者: Mango

在现实生活中,如果一群人正在共同完成一项任务,那么他们之间应该进行沟通以正确完成任务。同样的类比也适用于线程。在编程中,为了减少处理器的理想时间,我们创建了多个线程,并为每个线程分配了不同的子任务。因此,必须有一个通信设施,并且他们应该相互交互以同步方式完成工作。考虑以下与线程互通有关的要点-没有性能提升-如果我们无法在线程和进程之间实现正确的通信,那么并发和并行性带来的性能提升就没有用了。正确完...

  测试线程应用程序

📅  最后修改于: 2020-11-08 08:46:40        🧑  作者: Mango

在本章中,我们将学习线程应用程序的测试。我们还将学习测试的重要性。为什么要测试?在深入讨论测试重要性之前,我们需要了解什么是测试。一般而言,测试是一种找出某件产品工作状况的技术。另一方面,特别是如果我们谈论计算机程序或软件,则测试是访问软件程序功能的技术。在本节中,我们将讨论软件测试的重要性。在软件开发中,在将软件发布给客户端之前,必须进行仔细检查。因此,由经验丰富的测试团队测试软件非常重要。考虑...

  调试线程应用程序

📅  最后修改于: 2020-11-08 08:47:07        🧑  作者: Mango

在本章中,我们将学习如何调试线程应用程序。我们还将学习调试的重要性。什么是调试?在计算机编程中,调试是从计算机程序中查找和删除错误,错误和异常的过程。该过程在编写代码后立即开始,并在代码与其他编程单元组合在一起以形成软件产品时连续进行。调试是软件测试过程的一部分,并且是整个软件开发生命周期的组成部分。Python调试器Python调试器或pdb是Python标准库的一部分。这是一个很好的回退工具,...

  基准测试和性能分析

📅  最后修改于: 2020-11-08 08:47:44        🧑  作者: Mango

在本章中,我们将学习基准测试和性能分析如何帮助解决性能问题。假设我们已经编写了一个代码,并且它也给出了预期的结果,但是如果由于需求发生了变化,我们希望更快地运行此代码,该怎么办。在这种情况下,我们需要找出代码的哪些部分使整个程序变慢。在这种情况下,基准测试和性能分析可能会很有用。什么是基准测试?基准测试旨在通过与标准进行比较来评估某些事物。但是,这里出现的问题是,基准测试是什么以及在软件编程的情况...

  Python的并发性-线程池

📅  最后修改于: 2020-11-08 08:48:17        🧑  作者: Mango

假设我们必须为多线程任务创建大量线程。由于线程过多,可能会出现许多性能问题,因此这将是计算上最昂贵的。一个主要问题可能是吞吐量受到限制。我们可以通过创建线程池来解决此问题。线程池可以定义为一组预初始化和空闲的线程,它们随时可以工作。当我们需要执行大量任务时,与为每个任务实例化新线程相比,创建线程池更为可取。线程池可以管理并发执行大量线程,如下所示:如果线程池中的线程完成其执行,则可以重用该线程。如...

  Python的并发性-进程池

📅  最后修改于: 2020-11-08 08:48:56        🧑  作者: Mango

可以使用与创建和使用线程池相同的方式来创建和使用进程池。流程池可以定义为一组预实例化和空闲的流程,它们随时可以进行工作。当我们需要执行大量任务时,与为每个任务实例化新流程相比,创建进程池更为可取。Python模块– Concurrent.futuresPython标准库具有一个称为current.futures的模块。在Python 3.2中添加了此模块,以为开发人员提供启动异步任务的高级接口。它...

  Python的并发-多处理

📅  最后修改于: 2020-11-08 08:49:52        🧑  作者: Mango

在本章中,我们将更多地关注多处理与多线程之间的比较。多处理它是在单个计算机系统中使用两个或多个CPU单元。通过利用计算机系统中可用的CPU内核数量,这是从硬件中获得最大潜能的最佳方法。多线程CPU通过同时执行多个线程来管理操作系统使用的能力。多线程的主要思想是通过将一个进程划分为多个线程来实现并行性。下表显示了它们之间的一些重要区别-MultiprocessingMultiprogrammingM...

  流程互通

📅  最后修改于: 2020-11-08 08:50:30        🧑  作者: Mango

流程互通意味着流程之间的数据交换。为了开发并行应用程序,必须在进程之间交换数据。下图显示了用于多个子进程之间同步的各种通信机制-多种沟通机制在本节中,我们将学习各种通信机制。机制描述如下-Queue列队列可以与多进程程序一起使用。多处理模块的Queue类类似于Queue.Queue类。因此,可以使用相同的API。Multiprocessing.Queue为我们提供了线程与进程之间安全的FIFO(先...