python

超轻量级php框架startmvc

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

更新时间:2020-06-23 21:54:01 作者:startmvc
python中使用subprocess来使用shell关于threading的用法from__future__importprint_functionimportsubprocessimportt

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 判断 ip