对python判断ip是否可达的实例详解
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设计】。