python程序同时ping多个地址_多线程。如何正确地同时ping多个ip?

我想做一个ping远程IP的控制台程序。我使用多线程同时ping多个IP。当所有IP都可以访问时,所有IP看起来都很好,但是当一个IP不可访问时,其他线程必须等待很长时间,直到坏的ping完成(我特意选择了一个不可连接的IP),这是因为连接方法要等到所有线程都结束。当我刚删除连接方法时,我的电脑崩溃了。在

为了克服这个问题,我做了以下的工作(创建了无限的ping函数,这样就不会因为里面的无限方法而终止thead),并在代码中保留了joinmethod,它是正确的,但是还有更好的选择吗?我想这个解决方案在资源消耗或其他方面可能有一些缺点。在

我的工作代码,我对它有疑问:

下面的方法在t100时间间隔内对b(IP)执行一次pingdef 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))

IP地址无限之一:

^{pr2}$

主程序: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()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值