我想制作可以 ping 远程 IP 的控制台程序。我使用多线程同时 ping 多个 IP。当所有IP都可达时,一切看起来都不错,但是当一个IP不可达时,其他线程必须等待很长时间,直到错误的ping完成(我故意选择了一个无法ping通的IP),由于join方法,它会等到所有线程结束。当我刚刚删除 join 方法时,我的 PC 崩溃了。
我做了以下工作来解决这个问题(创建了无限 ping 函数,因此由于内部的无限方法而无法结束 thead)并在代码中保留 joinmethod,它工作正常,但有没有更好的选择?我想该解决方案在资源消耗或任何其他方面可能存在一些缺点。
我的工作代码,我对此表示怀疑:
下面的方法b在 t100 时间间隔内对(IP)执行一次 ping 操作
def do_ping(b,t100):
a=os.system(f"ping -n 1 {b}")
h=good_time(time.localtime(),1)
with open(f"noob_{h}_{b}.txt",mode="a") as f:
t=good_time(time.localtime(),0)
if(a==int(0)):
f.write(f"The remote destination {b} is reachable, everyting is enter code hereOKAY. {t} \n")
elif(a==int(1)):
f.write(f"Ping {b} failed! {t} \n")
time.sleep(int(t100))
无限 ping 一个 IP 地址:
def ping1(b,t100):
while(True):
IP_Op.do_ping(b,t100)
主程序:
while(True):
treadsN=[]
for i in b:
b 是一个 IP 列表(整个程序还将结果写入文件,如果 ping 长时间失败,将来会发送电子邮件
treadsN.append(threading.Thread(target=IP_Op.ping1, args=(i,3)))
for i in treadsN:
i.start()
for i in treadsN:
i.join()
白衣染霜花
相关分类