zoukankan      html  css  js  c++  java
  • Python多线程批量Ping主机IP的脚本



    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个线程的运行结果
    50个线程的运行结果

  • 相关阅读:
    快速排序算法
    HDOJ(1005) Number Sequence
    HDOJ(1004) Let the Balloon Rise
    HDOJ(1003) Max Sum
    HDOJ(1002) A + B Problem II
    HDOJ(1001) Sum Problem
    HDOJ(1000) A + B Problem
    DeepFaceLab小白入门(5):训练换脸模型!
    DeepFaceLab小白入门(4):提取人脸图片!
    DeepFaceLab小白入门(3):软件使用!
  • 原文地址:https://www.cnblogs.com/cute/p/13524272.html
Copyright © 2011-2022 走看看