对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中解析JSON并同时进行自定义编码处理实例
Feb 08 Python
Python找出文件中使用率最高的汉字实例详解
Jun 03 Python
python去除空格和换行符的实现方法(推荐)
Jan 04 Python
Python实现多条件筛选目标数据功能【测试可用】
Jun 13 Python
用Python实现读写锁的示例代码
Nov 05 Python
python3中eval函数用法使用简介
Aug 02 Python
解决tensorflow训练时内存持续增加并占满的问题
Jan 19 Python
python 图像判断,清晰度(明暗),彩色与黑白实例
Jun 04 Python
python右对齐的实例方法
Jul 05 Python
python接口自动化框架实战
Dec 23 Python
如何利用Matlab制作一款真正的拼图小游戏
May 11 Python
浅析Python中的套接字编程
Jun 22 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学习之PHP表达式
2006/10/09 PHP
PHPCMS的使用小结
2010/09/20 PHP
PHP学习之数组的定义和填充
2011/04/17 PHP
PHP __autoload函数(自动载入类文件)的使用方法
2012/02/04 PHP
Linux下PHP安装mcrypt扩展模块笔记
2014/09/10 PHP
php中最简单的字符串匹配算法
2014/12/16 PHP
PHP字符串与数组处理函数用法小结
2020/01/07 PHP
javascript 快速排序函数代码
2012/05/30 Javascript
javascript基于DOM实现权限选择实例分析
2015/05/14 Javascript
Nodejs实现批量下载妹纸图
2015/05/28 NodeJs
JS实现图片平面旋转的方法
2016/03/01 Javascript
jQuery图片轮播插件——前端开发必看
2016/05/31 Javascript
如何理解Vue的v-model指令的使用方法
2018/07/19 Javascript
NodeJS模块与ES6模块系统语法及注意点详解
2019/01/04 NodeJs
webpack-url-loader 解决项目中图片打包路径问题
2019/02/15 Javascript
Vue打包后访问静态资源路径问题
2019/11/08 Javascript
《javascript设计模式》学习笔记七:Javascript面向对象程序设计组合模式详解
2020/04/08 Javascript
vue项目或网页上实现文字转换成语音播放功能
2020/06/09 Javascript
解决antd 下拉框 input [defaultValue] 的值的问题
2020/10/31 Javascript
[41:52]2018DOTA2亚洲邀请赛3月29日小组赛B组Effect VS Secret
2018/03/30 DOTA
Python中每次处理一个字符的5种方法
2015/05/21 Python
python调用matplotlib模块绘制柱状图
2019/10/18 Python
python requests模拟登陆github的实现方法
2019/12/26 Python
使用Django和Postgres进行全文搜索的实例代码
2020/02/13 Python
详解Sticky Footer 绝对底部的两种套路
2017/11/03 HTML / CSS
HTML5 Canvas标签使用收录
2009/07/07 HTML / CSS
加拿大大码女装购物网站:Penningtons
2020/12/26 全球购物
经典优秀个人求职自荐信格式
2013/09/25 职场文书
本科毕业生的求职信范文
2013/11/20 职场文书
粗加工管理制度
2014/02/04 职场文书
学习党的群众路线教育实践活动心得体会
2014/03/01 职场文书
小爸爸观后感
2015/06/15 职场文书
干部考核工作总结2015
2015/07/24 职场文书
pytorch 实现在测试的时候启用dropout
2021/05/27 Python
vscode中使用npm安装babel的方法
2021/08/02 Javascript
Java Spring读取和存储详细操作
2022/08/05 Java/Android