原理:设置一个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 工作已完成