对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 相关文章推荐
Python描述器descriptor详解
Feb 03 Python
python实现守护进程、守护线程、守护非守护并行
May 05 Python
在pycharm中设置显示行数的方法
Jan 16 Python
Python Matplotlib实现三维数据的散点图绘制
Mar 19 Python
实例详解Python装饰器与闭包
Jul 29 Python
python实现的生成word文档功能示例
Aug 23 Python
如何使用Python脚本实现文件拷贝
Nov 20 Python
浅谈keras中的后端backend及其相关函数(K.prod,K.cast)
Jun 29 Python
导致python中import错误的原因是什么
Jul 01 Python
Django封装交互接口代码
Jul 12 Python
Pandas中DataFrame基本函数整理(小结)
Jul 20 Python
python爬虫判断招聘信息是否存在的实例代码
Nov 20 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+MSSQL分页的例子
2006/10/09 PHP
PHP 之Section与Cookie使用总结
2012/09/14 PHP
mysqli_set_charset和SET NAMES使用抉择及优劣分析
2013/01/13 PHP
解析php file_exists无效的解决办法
2013/06/26 PHP
php更新mysql后获取改变行数的方法
2014/12/25 PHP
WordPress中登陆后关闭登陆页面及设置用户不可见栏目
2015/12/31 PHP
PHP里的$_GET数组介绍
2019/03/22 PHP
javascript中数组的sort()方法的使用介绍
2013/12/18 Javascript
一个html5播放视频的video控件只支持android的默认格式mp4和3gp
2014/05/08 Javascript
js实现全国省份城市级联下拉菜单效果代码
2015/09/07 Javascript
jQuery+canvas实现简单的球体斜抛及颜色动态变换效果
2016/01/28 Javascript
js 函数式编程学习笔记
2017/03/25 Javascript
浅谈js获取ModelAndView值的问题
2018/03/28 Javascript
node.js使用zlib模块进行数据压缩和解压操作示例
2020/02/12 Javascript
JavaScript进阶(三)闭包原理与用法详解
2020/05/09 Javascript
design vue 表格开启列排序的操作
2020/10/28 Javascript
Python工厂函数用法实例分析
2018/05/14 Python
Python饼状图的绘制实例
2019/01/15 Python
Python3调用百度AI识别图片中的文字功能示例【测试可用】
2019/03/13 Python
tensorflow 获取checkpoint中的变量列表实例
2020/02/11 Python
html5 Canvas画图教程(11)—使用lineTo/arc/bezierCurveTo画椭圆形
2013/01/09 HTML / CSS
Microsoft新加坡官方网站:购买微软最新软件和技术产品
2016/10/28 全球购物
Senreve官网:美国旧金山的奢侈手袋品牌
2019/03/21 全球购物
有原因的手表:Flex Watches
2019/03/23 全球购物
美国折扣地毯销售网站:Rugs.com
2020/03/27 全球购物
Javascript如何发送一个Ajax请求
2015/01/26 面试题
仓库保管员岗位职责
2013/12/20 职场文书
校园摄影活动策划方案
2014/02/05 职场文书
物流管理专业毕业生求职信
2014/03/23 职场文书
办护照工作证明
2014/10/01 职场文书
2015年文明创建工作总结
2015/04/30 职场文书
医院党建工作总结2015
2015/05/26 职场文书
当幸福来敲门英文观后感
2015/06/01 职场文书
给朋友的赠语
2015/06/23 职场文书
2017寒假社会实践心得体会范文
2016/01/14 职场文书
让人感觉高大上的讲话稿怎么写?
2019/07/08 职场文书