先看ping一个ip
import subprocess
def ping_host():
# 调用ping命令
response = subprocess.run(['ping', '183.201.224.213'], capture_output=True, text=True)
# 返回调用结果
return response.stdout
# 调用函数并打印结果
print(ping_host())
使用多线程,连续ping一批, 183.201.224.213----183.201.224.254 共42个
import time
import subprocess
from multiprocessing.dummy import Pool as ThreadPool
def ping_host(ip):
response = subprocess.run(['ping', ip], capture_output=True, text=True) # 调用ping命令
return response.stdout # 返回调用结果
if __name__ == '__main__':
t0=time.time() #计时开始
#多线程
ips=[f'183.201.224.{i}' for i in range(213,255)]
pool = ThreadPool(8) #线程数
results=pool.map(ping_host, ips) #多线程工作,分配参数
pool.close()
pool.join()
for result in results:
print(result)
print(f'用时:{time.time()-t0}')
结果:
ping 42个地址,用时50秒左右, 实现了并行加速的目标