首页 > 编程 > Python > 正文

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

2019-11-25 13:21:01
字体:
来源:转载
供稿:网友

python中使用subprocess来使用shell

关于threading的用法

from __future__ import print_functionimport subprocessimport threadingdef 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_functionimport subprocessimport threadingfrom Queue import Queuefrom Queue import Emptydef 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:    passdef 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是否可达的实例详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持武林网。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表