对python判断ip是否可达的实例详解
python中使用subprocess来使用shell
关于threading的用法
from__future__importprint_function
importsubprocess
importthreading
defis_reachable(ip):
ifsubprocess.call(["ping","-c","2",ip])==0:#只发送两个ECHO_REQUEST包
print("{0}isalive.".format(ip))
else:
print("{0}isunalive".format(ip))
if__name__=="__main__":
ips=["www.baidu.com","192.168.0.1"]
threads=[]
foripinips:
thr=threading.Thread(target=is_reachable,args=(ip,))#参数必须为tuple形式
thr.start()#启动
threads.append(thr)
forthrinthreads:
thr.join()
改良:使用Queue来优化(FIFO)
from__future__importprint_function
importsubprocess
importthreading
fromQueueimportQueue
fromQueueimportEmpty
defcall_ping(ip):
ifsubprocess.call(["ping","-c","2",ip])==0:
print("{0}isreachable".format(ip))
else:
print("{0}isunreachable".format(ip))
defis_reachable(q):
try:
whileTrue:
ip=q.get_nowait()#当队列为空,不等待
call_ping(ip)
exceptEmpty:
pass
defmain():
q=Queue()
args=["www.baidu.com","www.sohu.com","192.168.0.1"]
forarginargs:
q.put(arg)
threads=[]
foriinrange(10):
thr=threading.Thread(target=is_reachable,args=(q,))
thr.start()
threads.append(thr)
forthrinthreads:
thr.join()
if__name__=="__main__":
main()
以上这篇对python判断ip是否可达的实例详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。