原理:設置一個adress列表,而後把ip傳到定義的函數裏面執行,使用queue隊列實現多線程,很簡單,很少說了,看代碼python
[root@localhost ~]# cat ping.py #coding:utf8 import os import threading import Queue queue = Queue.Queue() address = ['202.105.182.55','202.105.182.53','202.105.182.51','202.105.182.48'] _thread = 3 for 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.py Thread 0:Pinging 202.105.182.55 Thread 1:Pinging 202.105.182.53 Thread 2:Pinging 202.105.182.51 202.105.182.53:正常運行 Thread 1:Pinging 202.105.182.48 202.105.182.55:正常運行 202.105.182.51:正常運行 202.105.182.48:正常運行 ping 工做已完成