Python多執行緒批量Ping主機IP的指令碼
阿新 • • 發佈:2020-08-18
Python 編寫多執行緒 Ping 主機IP的指令碼
1. 先編寫一個 Ping 主機IP的指令碼
ping_ip.py
import subprocess import time # 記錄開始執行的時間 start_time = time.time() # 定義用來 ping 的254 個 ip ip_list = ['10.3.1.'+str(i) for i in range(1,255)] for ip in ip_list: res = subprocess.call('ping -n 2 -w 5 %s' % ip,stdout=subprocess.PIPE) # linux 系統將 '-n' 替換成 '-c' print(ip,True if res == 0 else False) print('執行所用時間:%s' % (time.time() - start_time))
2. 改造成多執行緒的指令碼
ping_threading.py
import threading import subprocess import time from queue import Queue # 定義工作執行緒 WORD_THREAD = 50 # 將需要 ping 的 ip 加入佇列 IP_QUEUE = Queue() for i in range(1,255): IP_QUEUE.put('10.3.1.'+str(i)) # 定義一個執行 ping 的函式 def ping_ip(): while not IP_QUEUE.empty(): ip = IP_QUEUE.get() res = subprocess.call('ping -n 2 -w 5 %s' % ip,stdout=subprocess.PIPE) # linux 系統將 '-n' 替換成 '-c' # 列印執行結果 print(ip,True if res == 0 else False) if __name__ == '__main__': threads = [] start_time = time.time() for i in range(WORD_THREAD): thread = threading.Thread(target=ping_ip) thread.start() threads.append(thread) for thread in threads: thread.join() print('程式執行耗時:%s' % (time.time() - start_time))
3.執行效果對比
單執行緒的執行結果
50個執行緒的執行結果