`
wwty
  • 浏览: 543037 次
  • 性别: Icon_minigender_1
  • 来自: 北京-郑州
社区版块
存档分类
最新评论

并发编程的概念知识以及twisted的引出

阅读更多

并发编程介绍:
要完成某些计算任务经常需要不少时间,其原因有两点:
任务是计算集中型的(比如,求一个很大整数的所有因数),并且需要相当的CPU时间进行计算;或者
任务并不是计算集中型的,但是需要等待某些数据,以产生结果。

 

等待回应
网络编程的基本功能就是等待数据。想象你有一个函数,这个函数会总结一些信息并且作为电子邮件发送。函数需要连接到一个远程服务器、等待服务器的回应、检查服务器能否处理这封电子邮件、等待回应、发送电子邮件、等待确认信息,然后断开连接。

这其中任何一步都有可能占用很长时间。你的程序可能使用所有可能模型中最简单的一个——它实际上只是停下来等着数据的发送和接收,但在这种情况下,它有非常明显的基本限制:它不能同时发送多封电子邮件;并且在发送电子邮件的时候,它其实什么也做不了。

因此,除了最简单的之外,所有网络程序都会避免这种模型。另外还有许多不同的模型,它们都允许你的程序在等待数据以继续某个任务的同时,继续做手头上的其他任务,这些模型你都可以采纳。

Twisted是众多模型中的一种:在一个线程中,使用非阻塞的系统调用来处理所有连接。
当在一个线程中处理多个连接时,调度就成为了应用程序的责任,而不是操作系统的。调度通常的实现方案是:当连接准备好读或是写时,调度系统会调用一个之前注册过的函数——通常被叫做异步,事件驱动或是基于回调的编程。

 

在这种模型下,之前发送电子邮件的函数应该是象这样的:
调用一个连接函数,用以连接到远程服务器;
连接函数立刻返回,暗示着当连接建立后,将调用电子邮件发送的通知;并且
连接一旦建立,系统就会通知发送电子邮件的函数,连接已经准备就绪。

从上面的文字当中,可以看出并发编程出现的原因是因为出现了用户的某一个请求是计算集中型的,或者是需要数据等待的类型,这样就造成了各方面的等待现象:人们在计算机旁边坐着等待最终结果的返回,而CPU的资源并没有得到充分的利用,CPU也在等待结果;因为造成的这种等待并不是CPU资源不够用造成的,而是自然规律上需要的等待;大家只要稍微用心考虑一下,就可以想明白。所以如果能将当前等待的事情放置起来,让CPU去先处理其他的工作,等放置起来的任务有结果返回了,再去进行下面的处理。这个过程当中有一个问题,就是如何触发CPU来处理放置起来的工作?

 

callback
callback(回调)是通知应用程序数据已经就绪的经典模型。应用程序在调用一个方法,试图获取一些数据时,同时提供一个callback函数,当数据就绪时,这个callback函数会被调用,并且就绪的数据就是调用的参数之一。因此,应用程序应该在callback函数中,继续执行之前获取这些数据时,想要执行的任务(当时没能马上得到这些数据,所以当时无法执行这些任务——译者注)。

在同步编程中,一个函数会先请求数据,然后等待数据,最后处理它。在异步编程中,一个函数请求数据之后,会在数据准备就绪后,让外部库调用其callback函数。

分享到:
评论

相关推荐

    Twisted与异步编程入门

    这种方式有助于读者逐步建立起对异步编程和Twisted框架的深刻理解,从而能更好地利用Twisted进行网络编程和并发处理。 总结来说,异步编程和Twisted框架是提升Python网络应用性能的关键工具,理解其背后的模型和...

    Python Twisted网络编程框架(中文)

    ### Python Twisted网络编程框架知识点解析 #### 一、引言 Twisted 是一个非常强大的异步编程框架,主要用于Python中的网络编程。该框架能够帮助开发者轻松地构建高性能的网络应用,包括但不限于客户端和服务端应用...

    Python高性能网络编程并发框架研究.pdf

    在研究高性能网络编程并发框架时,本文主要介绍了网络编程的基本概念、并发模型以及Python语言在构建高性能网络服务中的应用。本文将对以下几个知识点进行详细阐述: 1. 网络编程基本概念 网络编程涉及不同计算机或...

    Twisted系列教程.pdf

    ”为任务紧急的人提供一份 Twisted 介绍”的的需求。 值得提前透露的是,这个序列并不会如他们所愿.尤其是介绍 Twisted 框架和基于 Python 的异步编程而言, 可能短时间无法讲清楚。

    Twisted网络编程必备

    Twisted是Python编程中的一款强大的、面向对象的网络编程框架,尤其适合于异步和事件驱动的编程。其设计目标是提供一套灵活、多功能且易于使用的工具,以便开发者能够构建高度可扩展的网络应用程序。 首先,Twisted...

    twisted网络编程.txt

    ### Twisted网络编程知识点 #### 一、为什么选择Twisted? 1. **高效与灵活性**:Twisted 是一个异步事件驱动的网络引擎,适用于多种操作系统(如 Linux、Windows、Unix 和 Mac)。它能有效处理高并发场景下的网络...

    Twisted与异步编程入门(汇总版)

    总之,Twisted框架为Python程序员提供了一种强大而灵活的方式来实现异步网络编程,它的设计思想和工具集对于理解和构建高并发、低延迟的应用程序非常有价值。通过深入学习和实践,开发者可以充分利用Twisted来解决...

    Twisted网络编程

    ### Twisted网络编程知识点概述 #### 一、Twisted为何值得使用? 1. **基于Python:** - **跨平台支持:** Python 的跨平台特性意味着 Twisted 可以在 Linux、Windows、Unix 和 MAC 等不同操作系统上运行。 - **...

    twisted适合python3.8版本

    Twisted是Python编程语言中的一个开源网络框架,专注于异步编程和事件驱动的网络应用开发。这个框架在Python社区中广泛使用...对于希望涉足异步编程和网络应用开发的Python开发者而言,掌握Twisted的知识是至关重要的。

    twisted 异步教程 中文版

    Twisted的使用涉及到一系列的概念,如“回调”、“进程守护”以及“构造轮子内的轮子”,这些概念是Twisted框架的基石。例如,“回调”是在异步编程中处理异步操作完成的常用手段。在Twisted中,可以使用Deferred...

    twisted introduction

    在文档中提到了一些关键的异步编程概念,比如事件驱动编程模型,以及如何通过简单的Python程序来演示异步系统的工作原理。随后会深入到Twisted的低级方面,这些通常在日常编程中不会用到,但对理解Twisted的工作原理...

    Twisted网络编程概要

    由于网络编程往往比较复杂,涉及多线程或多进程的并发处理,而使用Twisted可以让这些任务变得更加轻松。 首先,文档提到的版本信息指出这是一本第二版的书籍,由Jessica McKellar和Abe Fettig两位作者编写。这本书...

    twisted系列教程-中文

    该教程将从基础开始,逐步深入Twisted的世界,帮助读者了解异步编程的思想和Twisted的使用方法。 异步编程模型 异步编程模型是一种高效的编程方式,允许程序同时执行多个任务,而不需要等待每个任务完成。在同步...

Global site tag (gtag.js) - Google Analytics