`
小麦麦子
  • 浏览: 31215 次
文章分类
社区版块
存档分类
最新评论

Python中Paramiko协程方式详解

阅读更多

什么是协程

  协程我们可以看做是一种用户空间的线程。

  操作系统对齐存在一无所知,需要用户自己去调度。

  比如说进程,线程操作系统都是知道它们存在的。协程的话是用户空间的线程,操作系统是不知道的。

  为什么要使用协程

  与线程不同,协程是自己主动让出cpu,并交付它期望的下一个协程运行,而不是在任何时候都有可能被系统调度打断。因此协程的使用更加清晰易懂,并且多数情况下不需要锁机制。与线程相比,协程的切换由程序控制,发生在用户空间而非内核控件,因此切换的代价非常的小。某种意义上,协程与线程的关系类似与线程与进程的关系,多个协程会在同一个线程的上下文之中运行。这样程序不多线程好理解。来看一个视图。



 

  比如说一个进程它有多个线程,但是一个线程内它又有多个协程,然后这些协程就是说,有用户,就是程序员来说定义它在什么时候交出控制权,给其它协程来进行一些操作。

  gevent简介

  Python一个很著名的一个协程库就是geventgevent是一个基于libev的并发库。它为各种并发和网络相关的任务提供了郑洁的API。在gevent中用到的主要模式是Greenlet,它是以C扩展模块形式接入Python的轻量级协程。Greenlet全部运行在主程序操作系统进程的内部,但它们被协作式地调度。

  Python gevent API

  gevent.spawn(func,args)创建greenlet

  gevent.sleep(seconds)greenlet上下文切换

  gevent.joinall(greenlets)阻塞当前流程,执行所有给定greenlet

  我们来看一下视图。



 

  比如说这段代码它得执行是这样的,不如说它gevent创建出来的协程它sleep就是切换出来,就会到其它程序中去运行。然后其它程序再会让它在切换回来,它再回到原来的流程去运行这样,就做了一个交互式的操作。这样这张图就很明白的表名了这些。

  利用gevent实现

  对原有操作进行修改,手动切换。

  就是把这个程序切换出去,然给其它协程去操作。

  打开编辑器



 

  怎么改呢,这个是原来的查询远程机器的配置,这个比如说查询它的当前的时间。Data的话我们,这个都是在之前的课程讲过。Process比如说ssh它这个配置把它的section传过去。



 

   比如说ssh0



 



 

  然后我们如何修改呢,其实就是在原有的基础上让它手动的去切换,怎么切换我们就gevent_process,例如说创建出这个对象我就把它切换出去,切换出去的时候,首先要引入这个gevent这个库,调用它的sleep让它手动的切换出去。不如说connect的时候在切换出去。

  创建gevent协程

  然后我们就开始在主函数里面。 就建立协程,建立协程其实很简单比如它一个event=gevent.spawn,把协程的函数和它的参数传递进来。比如说它就是一个ssh0



 

  不如说我们让它joinalljoinall是一个数组,然后这我们应该申请一个events,把新请的这个events放进来。我们把这个events阻塞,让这个进程等待所有协程的结束。我们看一下。



 

  多个协程的话就非常简单了,我们以前也看到过,比如说这个task_num6我们就把它遍历,然后这个section就是这个样子就是ssh+str(i)



 

  然后把section传递进去,我们可以看到比如说我们可以查询六次,对六个机器进行查询。



 

  然后我们这样就完成了,我们可以看一下它的耗时,把它耗时给打印出来,就是两个的时间差



 



 

  它花费了3.80秒,我们下去的话大概可以根据之前的经验,把这个顺序执行跟这个协程式的执行,协程式的具体来说就是就是这台机器服务器的状态。这个过程它所发生时间其实它还是一个时间优势的,只不过是在这个地方它是时间优势体现的不明显,是因为我们只有在应用进程,然后在主动的去切换这个协程。然后在这parmiko的内部我们其实是没办法用,利用这个协程的切换来,因为它内部是封装起来的。只允许调用它现有的这些函数,我们中间是没办法打断它的。

  只有在这个具体的执行的时候,比如说两个run_cmd之间我们可以加一个协程让它切出去,比如说我这有查询一个其它的。



 

  比如说之前的查询它的内存,我可以在这在切一次。



 

  这样的话就主动地切换,就是说利用协程之间的操作的话,如果多个协程之间 我们这样切换的话它其实最终的效果是比顺序执行的时候要好,它是利用了协程的这个有点。

  等待gevent协程结束。

 

原文链接:http://www.maiziedu.com/wiki/frame/coroutines/

  • 大小: 54.9 KB
  • 大小: 71.1 KB
  • 大小: 88.5 KB
  • 大小: 123.9 KB
  • 大小: 84.1 KB
  • 大小: 23.1 KB
  • 大小: 114 KB
  • 大小: 21.6 KB
  • 大小: 63.6 KB
  • 大小: 26.4 KB
  • 大小: 65.1 KB
  • 大小: 30.6 KB
  • 大小: 80 KB
  • 大小: 71.1 KB
分享到:
评论

相关推荐

    python2.7 paramiko安装包

    总之,Paramiko是Python中用于SSH通信的不可或缺的工具,它为开发者提供了安全、便捷的方式来实现远程操作和数据交换。在遇到`pip`安装困难时,通过手动下载并安装的方式,可以帮助我们顺利使用这一强大的库。

    python及paramiko模块安装包

    python及paramiko模块安装包及安装步骤,附件是四个安装文件 python-2.7.6.msi(python安装文件), pycrypto-2.6.win32py2.7.exe(pycrypto模块安装文件), ecdsa-0.10.tar.gz, paramiko-1.12.1.tar.gz 安装步骤:...

    python通过paramiko复制远程文件及文件目录到本地

    paramiko是用python写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接。利用该模块,可以方便的进行ssh连接和sftp协议进行sftp文件传输以及远程命令执行。 安装paramiko也很简单,我用的...

    python使用paramiko实现ssh的功能详解

    Python中的Paramiko库是一个强大的SSH2协议库,它支持加密和认证等功能,使得开发者能够方便地在Python程序中实现远程服务器的自动化管理。本篇文章将详细介绍如何使用Paramiko实现SSH的功能,包括基于用户名和密码...

    windows_python3.7离线安装paramiko2.7.2全文件

    Paramiko是一个在Python中实现SSHv2协议的库,它提供了客户端和服务器端的功能,用于进行安全的远程通信。在Windows环境下,有时由于网络限制或安全性考虑,我们需要进行离线安装Python库,如Paramiko 2.7.2。本文将...

    离线安装python2的paramiko模块

    5. **确认安装**:安装完成后,可以在Python环境中输入`import paramiko`,如果没有出现错误,说明安装成功。 离线安装过程中可能出现的问题及解决方法: - **Python版本兼容性**:确保下载的Paramiko版本与你的...

    windows下_python_paramiko模块包

    安装完成后,你可以使用`如何在windows环境下安装python的paramiko模块实现SSH远程登录到其他平台.doc`文档中的指导,编写Python代码来建立SSH连接。下面是一个简单的示例: ```python import paramiko ssh = ...

    python-paramiko-2.1.1-3.el7.noarch.rpm

    官方离线安装包,亲测可用。使用rpm -ivh [rpm完整包名] 进行安装

    python3.6 安装paramiko,所需要的whl文件,适合内网安装,几个导入即可安装

    Python是世界上最受欢迎的编程语言之一,特别是在自动化、...通过这种方式,即使在内网环境中,你也可以轻松地利用Python 3.6和Paramiko进行远程操作。这个压缩包提供了一种便捷的方法来满足内网环境下的离线安装需求。

    python-paramiko-2.1.1-9.el7.noarch.rpm

    官方离线安装包,亲测可用。使用rpm -ivh [rpm完整包名] 进行安装

    python使用paramiko实现ssh的功能详解.docx

    ### Python使用Paramiko实现SSH的功能详解 #### 一、引言 在现代IT运维与开发工作中,远程管理和操作服务器是一项非常常见的任务。Python作为一种广泛使用的编程语言,提供了多种方式进行远程服务器管理,其中`...

    python paramiko+pycrypto

    Python中的Paramiko库是一个强大的SSH2协议库,它实现了客户端和服务器端的SSH协议,用于在不同系统之间进行安全的远程命令执行、文件传输等操作。Paramiko这个名字来源于瑞典语“parametrisk”(参数化的),它强调...

    python paramiko及他所依赖的模块,并附带安装说明

    总之,Python Paramiko是一个强大且灵活的SSH工具,结合PyCrypto和ECDSA,能够在Python环境中实现安全的网络通信。对于Windows 64位系统,通过pip可以方便地安装这些必要的依赖模块,从而开启Python的SSH之旅。

    python使用paramiko模块通过ssh2协议对交换机进行配置的方法.docx

    本文档将详细介绍如何利用Python中的`Paramiko`模块通过SSH2协议实现对网络交换机的远程配置操作。此方法适用于自动化运维场景,可以有效提高网络设备管理效率。 #### Paramiko模块简介 `Paramiko`是一个用于...

    第九周-第02章节-Python3.5-paramiko模块详解1.avi

    第九周-第02章节-Python3.5-paramiko模块详解1.avi

    第九周-第03章节-Python3.5-paramiko模块详解2.avi

    第九周-第03章节-Python3.5-paramiko模块详解2.avi

    python paramiko

    Python Paramiko库是一个强大的工具,用于在Python中实现SSHv2协议,主要用于远程控制和文件传输。这个库允许开发者在不直接使用操作系统命令的情况下,安全地执行命令、管理文件系统和进行网络设备配置。Paramiko...

    python-paramiko-doc-2.1.1-3.el7.noarch.rpm

    官方离线安装包,亲测可用。使用rpm -ivh [rpm完整包名] 进行安装

    python使用paramiko实现远程拷贝文件的方法

    这种需求可以通过多种方式实现,其中使用Python语言结合Paramiko库是一种非常高效且灵活的方法。Paramiko是一个用于进行SSH2协议编程的Python库,它可以让我们轻松地通过Python脚本执行远程文件传输、命令执行等操作...

    python2.75离线安装pip+flask+paramiko.zip

    Python 2.7.5 离线安装指南:pip、Flask 和 Paramiko 在没有互联网连接的情况下,为Python 2.7.5环境安装第三方库如pip、Flask和Paramiko,需要提前下载所需的whl或egg文件并进行本地安装。下面将详细介绍这个过程...

Global site tag (gtag.js) - Google Analytics