原理:设置一个adress列表,然后把ip传到定义的函数里面执行,使用queue队列实现多线程,很简单,不多说了,看代码

[root@localhost ~]# cat ping.py#coding:utf8import osimport threadingimport Queuequeue = Queue.Queue()address = ['202.105.182.55','202.105.182.53','202.105.182.51','202.105.182.48']_thread = 3for ip in address:        queue.put(ip)    #将IP放入队列中。函数中使用q.get(ip)获取def check(i,q):        while True:                ip=q.get() #获取Queue队列传过来的ip,队列使用队列实例queue.put(ip)传入ip,通过q.get() 获得                print "Thread %s:Pinging %s" %(i,ip)                data = os.system("ping -c 1 %s > /dev/null 2>&1" % ip)#使用os.system返回值判断是否正常                if data==0:                        print "%s:正常运行" % ip                else:                        print "%s:停止工作" % ip                q.task_done() #表示queue.join()已完成队列中提取元组数据for i in range(_thread):#线程开始工作        run=threading.Thread(target=check,args=(i,queue)) #创建一个threading.Thread()的实例,给它一个函数和函数的参数        run.setDaemon(True)#这个True是为worker.start设置的,如果没有设置的话会挂起的,因为check是使用循环实现的        run.start()     #开始线程的工作queue.join()#线程队列执行关闭print "ping 工作已完成"

运行查看

[root@localhost ~]# python ping.pyThread 0:Pinging 202.105.182.55Thread 1:Pinging 202.105.182.53Thread 2:Pinging 202.105.182.51202.105.182.53:正常运行Thread 1:Pinging 202.105.182.48202.105.182.55:正常运行202.105.182.51:正常运行202.105.182.48:正常运行ping 工作已完成