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

 更新时间:2019年01月31日 10:37:56   作者:你这只猪儿虫  
今天小编就为大家分享一篇对python判断ip是否可达的实例详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

python中使用subprocess来使用shell

关于threading的用法

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中第三方库pyecharts的使用详解

    python中第三方库pyecharts的使用详解

    这篇文章主要介绍了python中第三方库pyecharts的使用, pyecharts的作用是用来做数据图表,本文给大家介绍了作图的步骤及实例代码,需要的朋友可以参考下
    2022-08-08
  • python基础教程之序列详解

    python基础教程之序列详解

    这篇文章主要介绍了python基础教程之序列详解,本文的序列包含元组(tuple)、列表(list)等数据类型,需要的朋友可以参考下
    2014-08-08
  • NumPy对数组按索引查询实战方法总结

    NumPy对数组按索引查询实战方法总结

    数组的高级操作主要是组合数组,拆分数组,tile数组和重组元素,下面这篇文章主要给大家介绍了关于NumPy对数组按索引查询的相关资料,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2022-08-08
  • Python利用wxPython制作股票价格查询工具

    Python利用wxPython制作股票价格查询工具

    在当今信息时代,金融市场是一个引人注目的话题。本文将介绍如何使用 Yahoo Finance API、yfinance 模块和 wxPython 库来创建一个简单的全球股市实时价格查询工具,希望大家能够喜欢
    2023-05-05
  • 详解python statistics模块及函数用法

    详解python statistics模块及函数用法

    本节介绍 Python 中的另一个常用模块 —— statistics模块,该模块提供了用于计算数字数据的数理统计量的函数。这篇文章重点给大家介绍python statistics 模块的一些用法,感兴趣的朋友跟随小编一起看看吧
    2019-10-10
  • Python中三种命令行参数利用方式详解

    Python中三种命令行参数利用方式详解

    Python的命令行参数,提供了很多有用的功能,可以方便调试和运行,这篇文章主要给大家介绍了关于Python中三种命令行参数利用方式的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2023-12-12
  • Python数据可视化之分析热门话题“丁克家庭都怎么样了”

    Python数据可视化之分析热门话题“丁克家庭都怎么样了”

    今天小编就以一个数据分析师的视角来向大家讲述一下年轻人群体对于丁克的态度以及那些丁克家庭他们的想法是怎么样的?他们是否有过后悔当初的决定,需要的朋友可以参考下
    2021-06-06
  • Python中使用遍历在列表中添加字典遇到的坑

    Python中使用遍历在列表中添加字典遇到的坑

    今天小编就为大家分享一篇关于Python中使用遍历在列表中添加字典遇到的坑,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-02-02
  • python使用SQLAlchemy操作MySQL

    python使用SQLAlchemy操作MySQL

    这篇文章主要介绍了python使用SQLAlchemy操作MySQL,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-01-01
  • Python获取Windows桌面路径的三种方法

    Python获取Windows桌面路径的三种方法

    在日常编程工作中,有时我们需要将文件或数据自动保存到用户的桌面上以便于快速访问,在 Windows 操作系统中,可以通过多种方式来获取桌面路径,本文将详细介绍三种常用的方法,需要的朋友可以参考下
    2024-12-12

最新评论