在Python中,你可以使用ping3库来实现ping命令的功能
threading和multiprocessing库可以帮助你实现这一点。import os import threading from ping3 import ping, exceptions def ping_ip(ip, timeout=1): try: delay = ping(ip, timeout) if delay is not None: print(f"{ip} 在 {delay:.2f} ms") else: print(f"{ip} 无响应") except exceptions.Timeout as e: print(f"{ip} 超时: {e}") except PermissionError: print("请以管理员权限运行此脚本") ips = ["8.8.8.8", "8.8.4.4", "192.168.1.1"] threads = [] for ip in ips: t = threading.Thread(target=ping_ip, args=(ip,)) t.start() threads.append(t) for t in threads: t.join() asyncio库可以帮助你实现这一点。import asyncio from ping3 import ping, exceptions async def ping_ip(ip, timeout=1): try: delay = await asyncio.wait_for(ping(ip, timeout), timeout=timeout) if delay is not None: print(f"{ip} 在 {delay:.2f} ms") else: print(f"{ip} 无响应") except exceptions.Timeout as e: print(f"{ip} 超时: {e}") except PermissionError: print("请以管理员权限运行此脚本") async def main(): ips = ["8.8.8.8", "8.8.4.4", "192.168.1.1"] tasks = [ping_ip(ip) for ip in ips] await asyncio.gather(*tasks) asyncio.run(main()) 调整超时值:根据你的需求调整ping请求的超时值。默认的超时值可能不适合所有场景,你可以根据实际情况调整超时值以提高性能。
使用更快的ping库:ping3库是一个简单易用的库,但它的性能可能不如C语言实现的ping命令。你可以尝试使用pythonping库,它使用C语言实现,性能更高。要安装pythonping库,只需运行pip install pythonping。
from pythonping import ping, exceptions def ping_ip(ip, timeout=1): try: delay = ping(ip, timeout=timeout) if delay is not None: print(f"{ip} 在 {delay:.2f} ms") else: print(f"{ip} 无响应") except exceptions.Timeout as e: print(f"{ip} 超时: {e}") except PermissionError: print("请以管理员权限运行此脚本") ips = ["8.8.8.8", "8.8.4.4", "192.168.1.1"] for ip in ips: ping_ip(ip) 通过以上方法,你可以优化Python ping命令的性能。