对python判断ip是否可达的实例详解
程序员文章站
2023-01-26 14:48:56
python中使用subprocess来使用shell
from __future__ import print_function
import subpr...
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是否可达的实例详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。