Python多線程批量Ping主機IP的指令碼

來源:互聯網
上載者:User

標籤:python   ping   多線程   threading   Queue   

Python 編寫多線程 Ping 主機IP的指令碼1. 先編寫一個 Ping 主機IP的指令碼

ping_ip.py

import subprocessimport time# 記錄開始執行的時間start_time = time.time()# 定義用來 ping 的254 個 ipip_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 threadingimport subprocessimport timefrom 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個線程的運行結果

Python多線程批量Ping主機IP的指令碼

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.