python paramiko 多线程

Python paramiko多线程执行命令的脚本,加入了threading多线程,执行起来感觉效率很一般,有时候线程还会等待延迟。

据说别人测试的数据,Python多线程中每个时刻只有1个线程运行,每个逻辑CPU利用率都很低,只是有时候换换CPU运行。虽然不知道别人怎么观察的,不过执行起来确实慢,耗资源也比单线程高很多。

 

#!/usr/bin/python
# -*- coding: utf-8 -*-
import paramiko,threading,sys
class SSH_cmd(threading.Thread):
    hostname=''
    cmd=''
    username=''
    passwd=''
    port=''
    def run(self):
        ssh = paramiko.SSHClient()
        ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
        try:
            ssh.connect(hostname=self.hostname,port=self.port,username=self.username,password=self.passwd,timeout=10)
        except Exception,e:
            print 'connnet to %s is timeout ' % self.hostname
            sys.exit()
        cmd=self.cmd
        stdin,stdout,stderr=ssh.exec_command(cmd)
        if not stdout:
        print '%s is OK' % self.hostname
        else:
        print stdout.read()

def Init():
    File=open('cmd.conf')
    Flist=[]
    for i in File.readlines():
        if not i.strip():
            continue
        Flist.append(i)
        print Flist
    return Flist
    File.close()

if __name__=="__main__":
    A=Init()
    #excmd=raw_input('Enter your command:')
    #expasswd=raw_input('Enter your password:')
    for i in xrange(len(A)):
    cut=A[i].split()
    HOST=cut[0]
    CMD=SSH_cmd()
    CMD.hostname=HOST
    CMD.username=cut[1].strip()
    CMD.cmd=cut[4]
    CMD.port=int(cut[2])
    CMD.passwd=cut[3].strip()
    CMD.start()
转载
posted @ 2015-06-08 15:55  robotor  阅读(2822)  评论(2编辑  收藏  举报