原理:設置一個adress列表,然後把ip傳到定義的函數裏面執行,使用queue隊列實現多線程,很簡單,不多說了,看代碼
[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 工作已完成