对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完全新手教程
Feb 08 Python
Python中的生成器和yield详细介绍
Jan 09 Python
Python多进程同步简单实现代码
Apr 27 Python
Python3实现爬取指定百度贴吧页面并保存页面数据生成本地文档的方法
Apr 22 Python
详解Python logging调用Logger.info方法的处理过程
Feb 12 Python
对pyqt5多线程正确的开启姿势详解
Jun 14 Python
python多线程http压力测试脚本
Jun 25 Python
python图形开发GUI库wxpython使用方法详解
Feb 14 Python
Django实现列表页商品数据返回教程
Apr 03 Python
Python如何将函数值赋给变量
Apr 28 Python
PyTorch 中的傅里叶卷积实现示例
Dec 11 Python
Python如何识别银行卡卡号?
Jun 10 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
苏联队长,苏联超人蝙蝠侠,这些登场的“山寨”英雄真的很严肃
2020/04/09 欧美动漫
PHP 危险函数解释 分析
2009/04/22 PHP
php实现每天自动变换随机问候语的方法
2015/05/12 PHP
Laravel框架实现文件上传的方法分析
2019/09/29 PHP
json跟xml的对比分析
2008/06/10 Javascript
javascript 数组学习资料收集
2010/04/11 Javascript
分享27个jQuery 表单插件集合推荐
2011/04/25 Javascript
node.js中的fs.utimesSync方法使用说明
2014/12/15 Javascript
jquery图形密码实现方法
2015/03/11 Javascript
理解javascript定时器中的setTimeout与setInterval
2016/02/23 Javascript
jquery css实现邮箱自动补全
2016/11/14 Javascript
Vue修改mint-ui默认样式的方法
2018/02/03 Javascript
垃圾回收器的相关知识点总结
2018/05/13 Javascript
如何解决vue2.0下IE浏览器白屏问题
2018/09/13 Javascript
详解JavaScript添加给定的标签选项
2018/09/17 Javascript
vue框架下部署上线后刷新报404问题的解决方案(推荐)
2019/04/03 Javascript
express框架下使用session的方法
2019/07/31 Javascript
[01:16:50]DOTA2-DPC中国联赛 正赛 Phoenix vs CDEC BO3 第一场 3月7日
2021/03/11 DOTA
常见python正则用法的简单实例
2016/06/21 Python
Python扩展内置类型详解
2018/03/26 Python
浅析PHP与Python进行数据交互
2018/05/15 Python
python验证码识别教程之灰度处理、二值化、降噪与tesserocr识别
2018/06/04 Python
基于Python2、Python3中reload()的不同用法介绍
2019/08/12 Python
python实现七段数码管和倒计时效果
2019/11/23 Python
tensorflow mnist 数据加载实现并画图效果
2020/02/05 Python
翻转数列python实现,求前n项和,并能输出整个数列的案例
2020/05/03 Python
keras打印loss对权重的导数方式
2020/06/10 Python
python实现数字炸弹游戏程序
2020/07/17 Python
python录音并调用百度语音识别接口的示例
2020/12/01 Python
详解Java中一维、二维数组在内存中的结构
2021/02/11 Python
经典c++面试题四
2015/05/14 面试题
负责人任命书范本
2014/06/04 职场文书
旷工辞退通知书
2015/04/17 职场文书
二年级数学教学反思
2016/02/16 职场文书
python办公自动化之excel的操作
2021/05/23 Python
SpringBoot工程下使用OpenFeign的坑及解决
2021/07/02 Java/Android