对python判断ip是否可达的实例详解


Posted in Python onJanuary 31, 2019

python中使用subprocess来使用shell

from __future__ import print_function
import subprocess
import threading

def is_reachable(ip):
  if subprocess.call(["ping", "-c", "2", ip])==0:#只发送两个ECHO_REQUEST包
    print("{0} is alive.".format(ip))
  else:
    print("{0} is unalive".format(ip))
if __name__ == "__main__":
  ips = ["www.baidu.com","192.168.0.1"]
  threads = []
  for ip in ips:
    thr = threading.Thread(target=is_reachable, args=(ip,))#参数必须为tuple形式
    thr.start()#启动
    threads.append(thr)
  for thr in threads:
    thr.join()

改良 :使用Queue来优化(FIFO)

from __future__ import print_function
import subprocess
import threading
from Queue import Queue
from Queue import Empty

def call_ping(ip):
  if subprocess.call(["ping", "-c", "2", ip])==0:
    print("{0} is reachable".format(ip))
  else:
    print("{0} is unreachable".format(ip))


def is_reachable(q):
  try:
    while True:
      ip = q.get_nowait()#当队列为空,不等待
      call_ping(ip)
  except Empty:
    pass


def main():
  q = Queue()
  args = ["www.baidu.com", "www.sohu.com", "192.168.0.1"]
  for arg in args:
    q.put(arg)

  threads = []
  for i in range(10):
    thr = threading.Thread(target=is_reachable, args=(q,))
    thr.start()
    threads.append(thr)
  for thr in threads:
    thr.join()

if __name__ == "__main__":
  main()

以上这篇对python判断ip是否可达的实例详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python3.x版本中新的字符串格式化方法
Apr 24 Python
Python编程中的异常处理教程
Aug 21 Python
numpy.random.seed()的使用实例解析
Feb 03 Python
Python中将变量按行写入txt文本中的方法
Apr 03 Python
Python决策树之基于信息增益的特征选择示例
Jun 25 Python
在python plt图表中文字大小调节的方法
Jul 08 Python
Flask框架学习笔记之模板操作实例详解
Aug 15 Python
keras绘制acc和loss曲线图实例
Jun 15 Python
Java byte数组操纵方式代码实例解析
Jul 22 Python
python如何停止递归
Sep 09 Python
基于 Python 实践感知器分类算法
Jan 07 Python
在 Golang 中实现 Cache::remember 方法详解
Mar 30 Python
对python:threading.Thread类的使用方法详解
Jan 31 #Python
python实现一个简单的ping工具方法
Jan 31 #Python
Python获取网段内ping通IP的方法
Jan 31 #Python
Python实现删除排序数组中重复项的两种方法示例
Jan 31 #Python
python重试装饰器的简单实现方法
Jan 31 #Python
Python实现合并两个有序链表的方法示例
Jan 31 #Python
Django 日志配置按日期滚动的方法
Jan 31 #Python
You might like
解析php中的escape函数
2013/06/29 PHP
隐性调用php程序的方法
2015/06/13 PHP
WordPress中缩略图的使用以及相关技巧
2015/11/24 PHP
PHP内核探索之变量
2015/12/22 PHP
Zend Framework分页类用法详解
2016/03/22 PHP
Alliance vs AM BO3 第二场2.13
2021/03/10 DOTA
javascript OFFICE控件测试代码
2009/12/08 Javascript
jquery ready()的几种实现方法小结
2010/06/18 Javascript
jquery事件重复绑定的快速解决方法
2014/01/03 Javascript
JS(JQuery)操作Array的相关方法介绍
2014/02/11 Javascript
jquery、js操作checkbox全选反选
2014/03/12 Javascript
jquery实现一个简单的表单验证实例
2016/03/30 Javascript
Angularjs 制作购物车功能实例代码
2016/09/14 Javascript
Vue.js组件tree实现省市多级联动
2016/12/02 Javascript
JavaScript+H5实现微信摇一摇功能
2018/05/23 Javascript
在vue中解决提示警告 for循环报错的方法
2018/09/28 Javascript
详解React之key的使用和实践
2018/09/29 Javascript
Node.js学习教程之Module模块
2019/09/03 Javascript
vue实现淘宝购物车功能
2020/04/20 Javascript
js实现表单项的全选、反选及删除操作示例
2020/06/05 Javascript
python定时检查启动某个exe程序适合检测exe是否挂了
2013/01/21 Python
python抓取网页图片并放到指定文件夹
2014/04/24 Python
python异常和文件处理机制详解
2016/07/19 Python
python递归实现快速排序
2018/08/18 Python
python K近邻算法的kd树实现
2018/09/06 Python
详解django的serializer序列化model几种方法
2018/10/16 Python
Python Numpy:找到list中的np.nan值方法
2018/10/30 Python
python 实现图片旋转 上下左右 180度旋转的示例
2019/01/24 Python
PyQt5事件处理之定时在控件上显示信息的代码
2020/03/25 Python
python实现控制台输出颜色
2021/03/02 Python
巴西一家专门从事家居和装饰的连锁店:Camicado
2019/08/14 全球购物
Python使用openpyxl复制整张sheet
2021/03/24 Python
参观邀请函范文
2015/02/02 职场文书
刘胡兰观后感
2015/06/16 职场文书
学生早退检讨书(范文)
2019/08/19 职场文书
小程序实现悬浮按钮的全过程记录
2021/10/16 HTML / CSS