python 多线程ping测试_python 实现多线程ping检测服务器情况

原理:设置一个adress列表,然后把ip传到定义的函数里面执行,使用queue队列实现多线程,很简单,不多说了,看代码

[root@localhost ~]# cat ping.py

#coding:utf8

import os

import threading

import Queue

queue = Queue.Queue()

address = ['202.105.182.55','202.105.182.53','202.105.182.51','202.105.182.48']

_thread = 3

for ip in address:

queue.put(ip) #将IP放入队列中。函数中使用q.get(ip)获取

def check(i,q):

while True:

ip=q.get() #获取Queue队列传过来的ip,队列使用队列实例queue.put(ip)传入ip,通过q.get() 获得

print "Thread %s:Pinging %s" %(i,ip)

data = os.system("ping -c 1 %s > /dev/null 2>&1" % ip)#使用os.system返回值判断是否正常

if data==0:

print "%s:正常运行" % ip

else:

print "%s:停止工作" % ip

q.task_done() #表示queue.join()已完成队列中提取元组数据

for i in range(_thread):#线程开始工作

run=threading.Thread(target=check,args=(i,queue)) #创建一个threading.Thread()的实例,给它一个函数和函数的参数

run.setDaemon(True)#这个True是为worker.start设置的,如果没有设置的话会挂起的,因为check是使用循环实现的

run.start() #开始线程的工作

queue.join()#线程队列执行关闭

print "ping 工作已完成"

运行查看

[root@localhost ~]# python ping.py

Thread 0:Pinging 202.105.182.55

Thread 1:Pinging 202.105.182.53

Thread 2:Pinging 202.105.182.51

202.105.182.53:正常运行

Thread 1:Pinging 202.105.182.48

202.105.182.55:正常运行

202.105.182.51:正常运行

202.105.182.48:正常运行

ping 工作已完成

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值